Skip to content

Commit 05183de

Browse files
committed
ci: use GH API to get reviewer permissions
1 parent 8bb9eb5 commit 05183de

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

.github/workflows/remove-needs-review-on-review.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,44 @@ on:
88
jobs:
99
remove-needs-review:
1010
name: 🏷️ Remove needs review label
11-
if: github.repository == 'npmx-dev/npmx.dev' && contains(fromJson('["MEMBER","OWNER"]'), github.event.review.author_association)
11+
if: github.repository == 'npmx-dev/npmx.dev'
1212
runs-on: ubuntu-slim
1313
permissions:
14+
contents: read
1415
issues: write
1516
steps:
1617
- name: 🏷️ Remove needs review label
1718
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
1819
with:
1920
script: |
2021
const pr = context.payload.pull_request;
22+
const review = context.payload.review;
2123
const LABEL = 'needs review';
24+
const reviewer = review?.user?.login;
25+
26+
if (!reviewer) {
27+
console.log('No reviewer login found in payload, skipping.');
28+
return;
29+
}
2230
2331
if (!pr.labels.some(({ name }) => name === LABEL)) {
2432
console.log(`PR #${pr.number} does not have the "${LABEL}" label.`);
2533
return;
2634
}
2735
36+
const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({
37+
owner: context.repo.owner,
38+
repo: context.repo.repo,
39+
username: reviewer,
40+
});
41+
42+
console.log(`Reviewer @${reviewer} permission is "${permission.permission}".`);
43+
44+
if (!['admin', 'maintain', 'write'].includes(permission.permission)) {
45+
console.log(`Reviewer @${reviewer} is not a maintainer, skipping.`);
46+
return;
47+
}
48+
2849
await github.rest.issues.removeLabel({
2950
owner: context.repo.owner,
3051
repo: context.repo.repo,

0 commit comments

Comments
 (0)