mirror of
https://github.com/jdx/mise-action.git
synced 2026-05-19 07:51:53 +00:00
Closes PRs that have been inactive for 30+ days, aren't authored by jdx, and don't have a "keep-open" label. Runs daily at midnight. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
29 lines
1.4 KiB
YAML
29 lines
1.4 KiB
YAML
name: pr-closer
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 0 * * *" # daily at midnight
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
close-stale-prs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Close stale PRs
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
gh pr list -R jdx/mise-action --state open --json number,author,labels,updatedAt,statusCheckRollup --limit 100 | \
|
|
jq -r '.[] | select(
|
|
(.updatedAt | fromdateiso8601) < (now - 30*24*60*60) and
|
|
.author.login != "jdx" and
|
|
([.labels[].name] | index("keep-open") | not)
|
|
) | [.number, (if (.statusCheckRollup | length > 0) and ([.statusCheckRollup[].conclusion] | index("FAILURE") or index("failure")) then "failing" else "passing" end)] | @tsv' | \
|
|
while read -r pr status; do
|
|
echo "Closing PR #$pr (checks: $status)"
|
|
if [ "$status" = "failing" ]; then
|
|
gh pr close "$pr" -R jdx/mise-action -c "This PR has been open for more than 30 days without activity. Note: CI checks were failing, which may be why it wasn't reviewed. Feel free to reopen or create a new PR if you'd like to continue working on this."
|
|
else
|
|
gh pr close "$pr" -R jdx/mise-action -c "This PR has been open for more than 30 days without activity. Feel free to reopen or create a new PR if you'd like to continue working on this."
|
|
fi
|
|
done
|