name: PR Labeler

on:
  pull_request:
    paths:
      - ".github/workflows/**"
    types: [opened, synchronize, reopened]

jobs:
  label-workflow-changes:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - name: Label PR with workflow changes
        uses: actions/github-script@v9
        with:
          script: |
            const labelName = 'workflow-modified';

            // Check if the label exists
            try {
              const labels = await github.rest.issues.listLabelsForRepo({
                owner: context.repo.owner,
                repo: context.repo.repo
              });

              const labelExists = labels.data.some(label => label.name === labelName);

              if (!labelExists) {
                // Create the label if it doesn't exist
                await github.rest.issues.createLabel({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  name: labelName,
                  color: 'f9d0c4',
                  description: 'This PR modifies GitHub Actions workflows'
                });
                console.log(`Label "${labelName}" created`);
              } else {
                console.log(`Label "${labelName}" already exists`);
              }
            } catch (error) {
              console.error(`Failed to check or create label: ${error.message}`);
              throw error;
            }

            // Add the label to the PR
            await github.rest.issues.addLabels({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              labels: [labelName]
            });
            console.log(`Label "${labelName}" added to the PR.`);
