From b9000cbde58ee27e6b40f4f0dadee01acc1347eb Mon Sep 17 00:00:00 2001 From: Cody Guldner Date: Fri, 17 Jul 2026 14:10:06 -0500 Subject: [PATCH] Close old PRs before creation, comment with link after The create-pull-request action force-pushes the branch, which closes old PRs before the close step can run. Move close step before PR creation (saving closed PR numbers), then comment "Superseded by #" on each afterward. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/spec_update.yml | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/.github/workflows/spec_update.yml b/.github/workflows/spec_update.yml index 2fe6a885..369d8756 100644 --- a/.github/workflows/spec_update.yml +++ b/.github/workflows/spec_update.yml @@ -85,6 +85,20 @@ jobs: pip install -r requirements.txt python generate_base_client.py + - name: Close Old Pull Requests + id: close-old-prs + if: steps.git-diff-num.outputs.num-diff != 0 + run: | + closed="" + gh pr list --label "automated-spec-update" --state open --json number --jq '.[].number' | while read -r pr_num; do + echo "Closing old PR #$pr_num" + gh pr close "$pr_num" --delete-branch + closed="${closed:+$closed,}$pr_num" + done + echo "closed=$closed" >> "$GITHUB_OUTPUT" + env: + GH_TOKEN: ${{ steps.app-token.outputs.token }} + - name: Create Pull Request id: create-pr uses: peter-evans/create-pull-request@v8 @@ -103,15 +117,12 @@ jobs: automated-spec-update draft: false - - name: Close Old Pull Requests - if: steps.create-pr.outputs.pull-request-number + - name: Comment on closed PRs + if: steps.create-pr.outputs.pull-request-number && steps.close-old-prs.outputs.closed run: | - gh pr list --label "automated-spec-update" --state open --json number --jq '.[].number' | while read -r pr_num; do - if [ "$pr_num" != "${{ steps.create-pr.outputs.pull-request-number }}" ]; then - echo "Closing old PR #$pr_num" - gh pr comment "$pr_num" --body "Superseded by #${{ steps.create-pr.outputs.pull-request-number }}" - gh pr close "$pr_num" --delete-branch - fi + IFS=',' read -ra prs <<< "${{ steps.close-old-prs.outputs.closed }}" + for pr_num in "${prs[@]}"; do + gh pr comment "$pr_num" --body "Superseded by #${{ steps.create-pr.outputs.pull-request-number }}" done env: GH_TOKEN: ${{ steps.app-token.outputs.token }}