Reduce nags about PRs that reference issues but don't fix them. (#16112)

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
Jacob Richman
2026-01-07 16:53:03 -08:00
committed by GitHub
parent dd04b46e86
commit 41cc6cf105

View File

@@ -19,9 +19,9 @@ process_pr() {
local PR_NUMBER=$1 local PR_NUMBER=$1
echo "🔄 Processing PR #${PR_NUMBER}" echo "🔄 Processing PR #${PR_NUMBER}"
# Get PR details: closing issue and draft status # Get PR details: closing issue, draft status, body and labels
local PR_DATA local PR_DATA
if ! PR_DATA=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json closingIssuesReferences,isDraft 2>/dev/null); then if ! PR_DATA=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json closingIssuesReferences,isDraft,body,labels 2>/dev/null); then
echo " ⚠️ Could not fetch data for PR #${PR_NUMBER}" echo " ⚠️ Could not fetch data for PR #${PR_NUMBER}"
return 0 return 0
fi fi
@@ -29,6 +29,17 @@ process_pr() {
local ISSUE_NUMBER local ISSUE_NUMBER
ISSUE_NUMBER=$(echo "${PR_DATA}" | jq -r '.closingIssuesReferences[0].number // empty') ISSUE_NUMBER=$(echo "${PR_DATA}" | jq -r '.closingIssuesReferences[0].number // empty')
# If no closing issue found, check body for references (e.g. #123)
if [[ -z "${ISSUE_NUMBER}" ]]; then
local REFERENCED_ISSUE
# Search for # followed by digits, not preceded by alphanumeric chars
REFERENCED_ISSUE=$(echo "${PR_DATA}" | jq -r '.body // empty' | grep -oE '(^|[^a-zA-Z0-9])#[0-9]+([^a-zA-Z0-9]|$)' | head -n 1 | grep -oE '[0-9]+' || echo "")
if [[ -n "${REFERENCED_ISSUE}" ]]; then
ISSUE_NUMBER="${REFERENCED_ISSUE}"
echo "🔗 Found referenced issue #${ISSUE_NUMBER} in PR body"
fi
fi
local IS_DRAFT local IS_DRAFT
IS_DRAFT=$(echo "${PR_DATA}" | jq -r '.isDraft') IS_DRAFT=$(echo "${PR_DATA}" | jq -r '.isDraft')
@@ -74,13 +85,10 @@ process_pr() {
ISSUE_LABELS=$(echo "${gh_output}" | grep -E "^(area|priority)/" | tr '\n' ',' | sed 's/,$//' || echo "") ISSUE_LABELS=$(echo "${gh_output}" | grep -E "^(area|priority)/" | tr '\n' ',' | sed 's/,$//' || echo "")
fi fi
# Get PR labels # Get PR labels from already fetched PR_DATA
echo "📥 Fetching labels from PR #${PR_NUMBER}" echo "📥 Extracting labels from PR #${PR_NUMBER}"
local PR_LABELS="" local PR_LABELS=""
if ! PR_LABELS=$(gh pr view "${PR_NUMBER}" --repo "${GITHUB_REPOSITORY}" --json labels -q '.labels[].name' 2>/dev/null | tr '\n' ',' | sed 's/,$//' || echo ""); then PR_LABELS=$(echo "${PR_DATA}" | jq -r '.labels[].name // empty' | tr '\n' ',' | sed 's/,$//' || echo "")
echo " ⚠️ Could not fetch PR labels"
PR_LABELS=""
fi
echo " Issue labels (area/priority): ${ISSUE_LABELS}" echo " Issue labels (area/priority): ${ISSUE_LABELS}"
echo " PR labels: ${PR_LABELS}" echo " PR labels: ${PR_LABELS}"