# This workflow allows any user to add one of the `awaiting-review`, `awaiting-author`, or `WIP` labels, # by commenting on the PR or issue. # Other labels from this set are removed automatically at the same time. name: Label PR based on Comment on: issue_comment: types: [created] jobs: update-label: if: github.event.issue.pull_request != null && (contains(github.event.comment.body, 'awaiting-review') || contains(github.event.comment.body, 'awaiting-author') || contains(github.event.comment.body, 'WIP')) runs-on: ubuntu-latest steps: - name: Add label based on comment uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const { owner, repo, number: issue_number } = context.issue; const commentLines = context.payload.comment.body.split('\r\n'); const awaitingReview = commentLines.includes('awaiting-review'); const awaitingAuthor = commentLines.includes('awaiting-author'); const wip = commentLines.includes('WIP'); if (awaitingReview || awaitingAuthor || wip) { await github.rest.issues.removeLabel({ owner, repo, issue_number, name: 'awaiting-review' }).catch(() => {}); await github.rest.issues.removeLabel({ owner, repo, issue_number, name: 'awaiting-author' }).catch(() => {}); await github.rest.issues.removeLabel({ owner, repo, issue_number, name: 'WIP' }).catch(() => {}); } if (awaitingReview) { await github.rest.issues.addLabels({ owner, repo, issue_number, labels: ['awaiting-review'] }); } if (awaitingAuthor) { await github.rest.issues.addLabels({ owner, repo, issue_number, labels: ['awaiting-author'] }); } if (wip) { await github.rest.issues.addLabels({ owner, repo, issue_number, labels: ['WIP'] }); }