name: Track duplicate bot effectiveness

on:
  issues:
    types: [closed]
  schedule:
    - cron: "0 8 */2 * *" # every 2 days at 8 AM UTC
  workflow_dispatch:

permissions:
  contents: read

jobs:
  classify-closed-issue:
    if: >
      github.event_name == 'issues' &&
      github.repository == 'zed-industries/zed' &&
      github.event.issue.pull_request == null &&
      github.event.issue.type != null &&
      (github.event.issue.type.name == 'Bug' || github.event.issue.type.name == 'Crash')
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - name: Checkout repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          sparse-checkout: script/github-track-duplicate-bot-effectiveness.py
          sparse-checkout-cone-mode: false

      - name: Get github app token
        id: get-app-token
        uses: actions/create-github-app-token@bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1 # v1.11.7
        with:
          app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
          private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
          owner: zed-industries

      - name: Set up Python
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: "3.12"

      - name: Install dependencies
        run: pip install requests

      - name: Classify closed issue
        env:
          GITHUB_TOKEN: ${{ steps.get-app-token.outputs.token }}
          ISSUE_NUMBER: ${{ github.event.issue.number }}
          CLOSER_LOGIN: ${{ github.event.sender.login }}
          STATE_REASON: ${{ github.event.issue.state_reason }}
        run: |
          python script/github-track-duplicate-bot-effectiveness.py \
            classify-closed "$ISSUE_NUMBER" "$CLOSER_LOGIN" "$STATE_REASON"

  classify-open:
    if: >
      github.repository == 'zed-industries/zed' &&
      (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout repository
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          sparse-checkout: script/github-track-duplicate-bot-effectiveness.py
          sparse-checkout-cone-mode: false

      - name: Get github app token
        id: get-app-token
        uses: actions/create-github-app-token@bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1 # v1.11.7
        with:
          app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }}
          private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }}
          owner: zed-industries

      - name: Set up Python
        uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
        with:
          python-version: "3.12"

      - name: Install dependencies
        run: pip install requests

      - name: Classify open issues
        env:
          GITHUB_TOKEN: ${{ steps.get-app-token.outputs.token }}
        run: |
          python script/github-track-duplicate-bot-effectiveness.py classify-open
