name: "Label PR"

on:
  - pull_request_target

# WARNING:
# When extending this action, be aware that $GITHUB_TOKEN allows some write
# access to the GitHub API. This means that it should not evaluate user input in
# a way that allows code injection.

permissions:
  contents: read
  pull-requests: write
  issues: write

jobs:
  labels:
    runs-on: ubuntu-latest
    if: github.repository_owner == 'nix-community'
    steps:
      - name: Get changed files count
        id: count
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUMBER: ${{ github.event.pull_request.number }}
        run: |
          COUNT=$(gh api "repos/${{ github.repository }}/pulls/$PR_NUMBER/files" --paginate --jq '.[].filename' | grep -c '^modules/' || true)
          echo "Found $COUNT changed module files."
          echo "count=$COUNT" >> "$GITHUB_OUTPUT"

      - uses: actions/labeler@v6
        if: steps.count.outputs.count <= 10
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
          sync-labels: true
