name: meta(labels)
on:
  pull_request:
    paths:
      - .github/labels.yml
  push:
    branches:
      - master
    paths:
      - .github/labels.yml

# hack for https://github.com/actions/cache/issues/810#issuecomment-1222550359
env:
  SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

jobs:
  sync:
    name: syncs repository labels
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
    steps:
      - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8  # v3.1.0
      - uses: getsentry/action-setup-volta@54775a59c41065f54ecc76d1dd5f2cdc7a1550cb  # v1.1.0

      - name: Install github-label-sync
        run: yarn global add github-label-sync@2.2.0

      - name: Run github-label-sync
        run: |
          github-label-sync \
            --access-token ${{ secrets.GITHUB_TOKEN }} \
            --labels .github/labels.yml \
            ${{ github.event_name == 'pull_request' && '--dry-run' || '' }} \
            ${{ github.repository }} \
            2>&1 | tee sync-report.txt

      - name: Read sync output into variable
        uses: actions/github-script@deb7ae927cc19ae3a8b57293dd5cd2f16171e1e2  # v4
        if: github.event_name == 'pull_request'
        id: github-label-sync
        with:
          script: |
            const fs = require('fs');
            return fs.readFileSync('sync-report.txt','utf8').toString();
          result-encoding: string

      - name: Find previous dry-run comment
        uses: peter-evans/find-comment@1769778a0c5bd330272d749d12c036d65e70d39d
        if: github.event_name == 'pull_request'
        id: fc
        with:
          issue-number: ${{ github.event.pull_request.number }}
          comment-author: 'github-actions[bot]'
          body-includes: '<!-- LABELS_UPDATE -->'

      - name: Add or update dry-run comment
        uses: peter-evans/create-or-update-comment@b95e16d2859ad843a14218d1028da5b2c4cbc4b4
        if: github.event_name == 'pull_request'
        with:
          issue-number: ${{ github.event.pull_request.number }}
          comment-id: ${{ steps.fc.outputs.comment-id }}
          edit-mode: replace
          body: >
            <!-- LABELS_UPDATE -->

            🏷  The following changes will be made to the repository labels

            ```
            ${{ steps.github-label-sync.outputs.result }}
            ```