name: Hold Label Check

on:
  pull_request:
    types: [labeled, unlabeled, opened, reopened, synchronize]

# cancel previous workflow jobs for PRs
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
  cancel-in-progress: true

jobs:
  check-hold-label:
    runs-on: ubuntu-22.04
    steps:
    - name: Check for 'hold' label
      uses: actions/github-script@v7
      with:
        github-token: ${{secrets.GITHUB_TOKEN}}
        script: |
          const payload = context.payload.pull_request
          const holdLabelPresent = !!payload.labels.find(label => label.name.includes('hold'))
          if (holdLabelPresent) {
            core.setFailed('Hold label is present, merge is blocked.')
          }
