-
-
Notifications
You must be signed in to change notification settings - Fork 424
Expand file tree
/
Copy pathremove-needs-review-on-review.yml
More file actions
69 lines (58 loc) · 2.21 KB
/
remove-needs-review-on-review.yml
File metadata and controls
69 lines (58 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
name: remove-needs-review-on-review
on:
pull_request_review:
types:
- submitted
jobs:
remove-needs-review:
name: 🏷️ Remove needs review label
if: github.repository == 'npmx-dev/npmx.dev'
runs-on: ubuntu-slim
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: 🏷️ Remove needs review label
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const pr = context.payload.pull_request;
const review = context.payload.review;
const LABEL = 'needs review';
const reviewer = review?.user?.login;
const author = pr.user?.login;
const reviewerType = review?.user?.type;
if (!reviewer) {
console.log('No reviewer login found in payload, skipping.');
return;
}
if (reviewerType === 'Bot') {
console.log(`Skipping bot review from @${reviewer} on PR #${pr.number}.`);
return;
}
if (reviewer === author) {
console.log(`Skipping self-review from @${reviewer} on PR #${pr.number}.`);
return;
}
if (!pr.labels.some(({ name }) => name === LABEL)) {
console.log(`PR #${pr.number} does not have the "${LABEL}" label.`);
return;
}
const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: reviewer,
});
console.log(`Reviewer @${reviewer} permission is "${permission.permission}".`);
if (!['admin', 'maintain', 'write'].includes(permission.permission)) {
console.log(`Reviewer @${reviewer} is not a maintainer, skipping.`);
return;
}
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: LABEL,
});
console.log(`Removed "${LABEL}" from PR #${pr.number}.`);