3030 REVIEWER : Pigbibi
3131 run : |
3232 set -euo pipefail
33- review_events() {
34- gh api --paginate \
35- "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/timeline?per_page=100" |
36- jq -sc --arg reviewer "${REVIEWER}" '
37- [.[][] | select(
38- (.event == "review_requested" or .event == "review_request_removed") and
39- .requested_reviewer.login == $reviewer
40- )]
41- '
42- }
43-
4433 current_review_requests() {
4534 gh pr view "${PR_NUMBER}" \
4635 --repo "${GITHUB_REPOSITORY}" \
@@ -54,23 +43,17 @@ jobs:
5443 exit 0
5544 fi
5645
57- events_before="$(review_events)"
58- latest_event="$(jq -r '.[-1].event // ""' <<<"${events_before}")"
59- latest_actor="$(jq -r '.[-1].actor.login // ""' <<<"${events_before}")"
60- case "${latest_event}:${latest_actor}" in
61- 'review_requested:dependabot[bot]'|'review_requested:app/dependabot') ;;
46+ latest_request_actor="$(gh api --paginate \
47+ "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/timeline?per_page=100" |
48+ jq -sr --arg reviewer "${REVIEWER}" \
49+ '[.[][] | select(.event == "review_requested" and .requested_reviewer.login == $reviewer)][-1].actor.login // ""')"
50+ case "${latest_request_actor}" in
51+ 'dependabot[bot]'|'app/dependabot') ;;
6252 *)
63- echo "Latest review event was ${latest_event:-<unknown>} by ${latest_actor :-<unknown>}; preserving the request ." >> "${GITHUB_STEP_SUMMARY}"
53+ echo "Latest review request was made by ${latest_request_actor :-<unknown>}; preserving it ." >> "${GITHUB_STEP_SUMMARY}"
6454 exit 0
6555 ;;
6656 esac
67- baseline_count="$(jq 'length' <<<"${events_before}")"
68-
69- review_requests="$(current_review_requests)"
70- if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then
71- echo "Review request was removed during cleanup; nothing to dismiss." >> "${GITHUB_STEP_SUMMARY}"
72- exit 0
73- fi
7457
7558 if ! gh api --method DELETE \
7659 "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \
8366 exit 1
8467 fi
8568
86- events_after="$(review_events)"
87- human_intent="$(jq -r --argjson baseline "${baseline_count}" '
88- [.[$baseline:][] | select(
89- .actor.login != "dependabot[bot]" and
90- .actor.login != "app/dependabot" and
91- .actor.login != "github-actions[bot]" and
92- .actor.login != "github-actions"
93- )][-1].event // ""
94- ' <<<"${events_after}")"
95-
96- if [ "${human_intent}" = 'review_requested' ]; then
97- review_requests="$(current_review_requests)"
98- if ! grep -Fqx "${REVIEWER}" <<<"${review_requests}"; then
99- gh api --method POST \
100- "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}/requested_reviewers" \
101- -f "reviewers[]=${REVIEWER}"
102- fi
103- echo "Preserved a concurrent human review request." >> "${GITHUB_STEP_SUMMARY}"
104- elif [ "${human_intent}" = 'review_request_removed' ]; then
105- echo "Preserved a concurrent human review removal." >> "${GITHUB_STEP_SUMMARY}"
106- else
107- echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}"
108- fi
69+ echo "Dismissed Dependabot review request for ${REVIEWER}." >> "${GITHUB_STEP_SUMMARY}"
0 commit comments