1- on : pull_request_review
2- name : Label approved pull requests
1+ on :
2+ pull_request_review :
3+ types : [submitted]
4+ name : Label pull requests on review
35jobs :
46 labelWhenApproved :
57 name : Label when approved
68 runs-on : ubuntu-latest
9+ permissions :
10+ contents : read
11+ pull-requests : write
712 steps :
8- - name : Label when approved
9- uses : abinoda/label-when-approved-action@master
10- env :
11- APPROVALS : ' 1'
12- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
13- ADD_LABEL : ' [Status] Approved'
14- # Needs to be URL-encoded, see https://github.com/abinoda/label-when-approved-action/pull/3#discussion_r321882620
15- REMOVE_LABEL : ' %5BStatus%5D%20Needs%20Review'
13+ - name : Check if review is approved
14+ id : check_approval
15+ run : |
16+ if [ "${{ github.event.review.state }}" = "approved" ]; then
17+ echo "approved=true" >> $GITHUB_OUTPUT
18+ else
19+ echo "approved=false" >> $GITHUB_OUTPUT
20+ fi
21+
22+ - name : Add approved label
23+ if : steps.check_approval.outputs.approved == 'true'
24+ uses : actions/github-script@v7
25+ with :
26+ script : |
27+ const { owner, repo, number } = context.issue;
28+
29+ // Add the approved label
30+ await github.rest.issues.addLabels({
31+ owner,
32+ repo,
33+ issue_number: number,
34+ labels: ['[Status] Approved']
35+ });
36+
37+ // Remove the needs review label if it exists
38+ try {
39+ await github.rest.issues.removeLabel({
40+ owner,
41+ repo,
42+ issue_number: number,
43+ name: '[Status] Needs Review'
44+ });
45+ } catch (error) {
46+ // Label might not exist, which is fine
47+ console.log('Label "[Status] Needs Review" not found or already removed');
48+ }
49+
50+ // Remove the needs changes or feedback label if it exists
51+ try {
52+ await github.rest.issues.removeLabel({
53+ owner,
54+ repo,
55+ issue_number: number,
56+ name: '[Status] Needs Changes or Feedback'
57+ });
58+ } catch (error) {
59+ // Label might not exist, which is fine
60+ console.log('Label "[Status] Needs Changes or Feedback" not found or already removed');
61+ }
62+
63+ labelWhenChangesRequested :
64+ name : Label when changes requested
65+ runs-on : ubuntu-latest
66+ permissions :
67+ contents : read
68+ pull-requests : write
69+ steps :
70+ - name : Check if review requests changes
71+ id : check_changes_requested
72+ run : |
73+ if [ "${{ github.event.review.state }}" = "changes_requested" ]; then
74+ echo "changes_requested=true" >> $GITHUB_OUTPUT
75+ else
76+ echo "changes_requested=false" >> $GITHUB_OUTPUT
77+ fi
78+
79+ - name : Add changes requested label
80+ if : steps.check_changes_requested.outputs.changes_requested == 'true'
81+ uses : actions/github-script@v7
82+ with :
83+ script : |
84+ const { owner, repo, number } = context.issue;
85+
86+ // Add the changes requested label
87+ await github.rest.issues.addLabels({
88+ owner,
89+ repo,
90+ issue_number: number,
91+ labels: ['[Status] Needs Changes or Feedback']
92+ });
93+
94+ // Remove the approved label if it exists
95+ try {
96+ await github.rest.issues.removeLabel({
97+ owner,
98+ repo,
99+ issue_number: number,
100+ name: '[Status] Approved'
101+ });
102+ } catch (error) {
103+ // Label might not exist, which is fine
104+ console.log('Label "[Status] Approved" not found or already removed');
105+ }
0 commit comments