22
33set -ex
44
5+ [ -n " $GITHUB_SERVER_URL " ] || {
6+ echo " Required environment variable GITHUB_SERVER_URL not found" >&2
7+ exit 1
8+ }
59[ -n " $GITHUB_REPOSITORY_OWNER " ] || {
610 echo " Required environment variable GITHUB_REPOSITORY_OWNER not found" >&2
711 exit 1
@@ -40,8 +44,8 @@ fetch_label_id () {
4044 fi
4145}
4246
43- jq -r ' .commits[].message' < " $GITHUB_EVENT_PATH " \
44- | while IFS= read -r msg; do
47+ jq --raw-output0 ' .commits[].message' < " $GITHUB_EVENT_PATH " \
48+ | while IFS= read -r -d ' ' msg; do
4549 pr_url=$( echo " $msg " | git interpret-trailers --parse | awk -F' : ' ' $1 == "PR-URL" { print $2; exit }' )
4650 pr_number=${pr_url## " $GITHUB_SERVER_URL /$GITHUB_REPOSITORY /pull/" }
4751
@@ -52,33 +56,30 @@ jq -r '.commits[].message' < "$GITHUB_EVENT_PATH" \
5256 esac
5357
5458 # shellcheck disable=SC2016
55- pr_id=" $( gh api graphql -f query='
56- query($owner:String!, $repo:String!, $number:Int!, $label:String! ) {
59+ pr_id=" $( LTS_WATCH_LABEL= " $label " gh api graphql -f query='
60+ query($owner:String!, $repo:String!, $number:Int!) {
5761 repository(owner:$owner, name:$repo) {
5862 pullRequest(number:$number) {
5963 id
60- labels(first: 1, query: $label) {
61- nodes { name }
62- }
64+ labels(first: 100) { nodes { name } }
6365 }
6466 }
65- }' -f owner=" $owner " -f repo=" $repo " -F number=" $pr_number " -f label= " $label " \
66- --jq ' if (.data.repository.pullRequest.labels.nodes | length) then .data.repository.pullRequest.id end' ) "
67+ }' -f owner=" $owner " -f repo=" $repo " -F number=" $pr_number " \
68+ --jq ' if (.data.repository.pullRequest.labels.nodes | any(.name == env.LTS_WATCH_LABEL)) then .data.repository.pullRequest.id else null end' ) "
6769
68- if [ -z " $pr_id " ] || [ " $pr_id " = " null" ]; then
69- echo " PR #$pr_number not found or does not have the label" >&2
70- continue
71- fi
70+ # Skip PRs that do not have the label
71+ [ -n " $pr_id " ] || continue
7272
73+ # Lazy-load the label ID if not done already
7374 [ -n " $label_id " ] || fetch_label_id
7475
7576 # shellcheck disable=SC2016
7677 gh api graphql -f query='
77- mutation($labelableId:ID!, $labelIds:[ID!] !) {
78- removeLabelsFromLabelable(input:{labelableId:$labelableId, labelIds:$labelIds }) {
78+ mutation($labelableId:ID!, $labelId:ID !) {
79+ removeLabelsFromLabelable(input:{labelableId:$labelableId, labelIds:[$labelId] }) {
7980 clientMutationId
8081 }
81- }' -f labelableId=" $pr_id " -f labelIds= " [ $label_id ] " > /dev/null
82+ }' -f labelableId=" $pr_id " -f labelId= " $label_id "
8283
8384 # gentle throttle
8485 sleep 0.2
0 commit comments