# Repo gardening. Automate some of the triage tasks in the repo.
name: Repo Gardening

on:
  pull_request_target: # When a PR is opened, edited, updated, closed, or a label is added.
    types: [opened, reopened, synchronize, edited, labeled, closed]
  issues: # For auto-triage of issues.
    types: [opened, labeled, reopened, edited, closed]
  issue_comment: # To gather support references in issue comments.
    types: [created]
concurrency:
  # For pull_request_target, cancel any concurrent jobs with the same type (e.g. "opened", "labeled") and branch.
  # Don't cancel any for other events, accomplished by grouping on the unique run_id.
  group: gardening-${{ github.event_name }}-${{ github.event.action }}-${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.ref || github.run_id }}
  cancel-in-progress: true

jobs:
  repo-gardening:
    name: 'Automated repo gardening.'
    runs-on: ubuntu-latest
    if: github.event_name == 'pull_request_target' || github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
    timeout-minutes: 10

    steps:
     - name: Checkout
       uses: actions/checkout@v3

     - name: Setup Node
       uses: actions/setup-node@v3
       with:
          node-version: lts/*

     - name: Wait for prior instances of the workflow to finish
       uses: softprops/turnstyle@v1
       env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

     - name: 'Automate triage (add labels, clean labels, ...).'
       uses: automattic/action-repo-gardening@trunk
       with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          slack_token: ${{ secrets.SLACK_TOKEN }}
          slack_team_channel: ${{ secrets.SLACK_TEAM_CHANNEL }}
          slack_he_triage_channel: ${{ secrets.SLACK_HE_TRIAGE_CHANNEL }}
          slack_quality_channel: ${{ secrets.SLACK_QUALITY_CHANNEL }}
          tasks: 'addLabels,cleanLabels,assignIssues,flagOss,gatherSupportReferences,replyToCustomersReminder'
          add_labels: '[
              {"path": "src/followers", "label": "[Block] Followers"},
              {"path": "src/follow-me", "label": "[Block] Follow Me"}
            ]'
