43 lines
1.9 KiB
YAML
43 lines
1.9 KiB
YAML
# 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'] });
|
|
}
|