@@ -6,20 +6,14 @@ name: Dismiss Dependabot Review Request
66
77permissions :
88 contents : read
9- issues : read
109 pull-requests : write
1110
12- concurrency :
13- group : ${{ github.workflow }}-${{ github.event.pull_request.number }}
14- cancel-in-progress : false
15-
1611jobs :
1712 dismiss-review-request :
1813 if : >-
1914 (github.event.pull_request.user.login == 'dependabot[bot]' ||
2015 github.event.pull_request.user.login == 'app/dependabot') &&
21- github.event.requested_reviewer.login == 'Pigbibi' &&
22- (github.actor == 'dependabot[bot]' || github.actor == 'app/dependabot')
16+ github.event.requested_reviewer.login == 'Pigbibi'
2317 runs-on : ubuntu-latest
2418 timeout-minutes : 5
2519 steps :
@@ -30,44 +24,28 @@ jobs:
3024 REVIEWER : Pigbibi
3125 run : |
3226 set -euo pipefail
33- latest_review_request_actor () {
34- gh api --paginate \
35- "repos/ ${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/timeline?per_page=100" |
36- jq -sr --arg reviewer "${REVIEWER}" \
37- '[.[][] | select(.event == "review_requested" and .requested_reviewer. login == $reviewer)][-1].actor.login // "" '
27+ current_review_requests () {
28+ gh pr view "${PR_NUMBER}" \
29+ --repo " ${GITHUB_REPOSITORY}" \
30+ --json reviewRequests \
31+ --jq '.reviewRequests[]. login'
3832 }
3933
40- review_requests="$(gh pr view "${PR_NUMBER}" \
41- --repo "${GITHUB_REPOSITORY}" \
42- --json reviewRequests \
43- --jq '.reviewRequests[].login')"
34+ review_requests="$(current_review_requests)"
4435 if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then
4536 echo "No review request for ${REVIEWER}; nothing to dismiss." >> "${GITHUB_STEP_SUMMARY}"
4637 exit 0
4738 fi
4839
49- latest_request_actor="$(latest_review_request_actor)"
50- case "${latest_request_actor}" in
51- 'dependabot[bot]'|'app/dependabot') ;;
52- *)
53- echo "Latest review request was made by ${latest_request_actor:-<unknown>}; preserving it." >> "${GITHUB_STEP_SUMMARY}"
54- exit 0
55- ;;
56- esac
57-
58- gh api --method DELETE \
40+ if ! gh api --method DELETE \
5941 "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \
60- -f "reviewers[]=${REVIEWER}"
42+ -f "reviewers[]=${REVIEWER}"; then
43+ review_requests="$(current_review_requests)"
44+ if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then
45+ echo "Review request was removed concurrently; nothing to dismiss." >> "${GITHUB_STEP_SUMMARY}"
46+ exit 0
47+ fi
48+ exit 1
49+ fi
6150
62- latest_request_actor="$(latest_review_request_actor)"
63- case "${latest_request_actor}" in
64- 'dependabot[bot]'|'app/dependabot')
65- echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}"
66- ;;
67- *)
68- gh api --method POST \
69- "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \
70- -f "reviewers[]=${REVIEWER}"
71- echo "Restored review request made by ${latest_request_actor:-<unknown>}." >> "${GITHUB_STEP_SUMMARY}"
72- ;;
73- esac
51+ echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}"
0 commit comments