blob: 0213bc4287413260963868292669eae0f1c48087 [file] [edit]
# A set of recipes to interact with Github pull requests
milestone := "3.38"
maintainers := "egli bertfrees"
# Show available recipes
[private]
help:
@just --list
# all open PRs for this release
all:
gh pr list --search "milestone:{{milestone}}"
# PRs ready to merge: both maintainers approved (or one approved when the other is author)
ready-to-merge:
gh pr list --search "milestone:{{milestone}} review:approved -label:\"needs fixup\"" \
--json number,title,author,reviews \
| jq -r '.[] | . as $pr | ($pr.reviews | map(select(.state == "APPROVED")) | map(.author.login)) as $approvers | select(($approvers | (contains(["egli"]) and contains(["bertfrees"]))) or ($pr.author.login == "bertfrees" and ($approvers | contains(["egli"]))) or ($pr.author.login == "egli" and ($approvers | contains(["bertfrees"])))) | "#\(.number)\t\(.title)"'
# View a PR
view pr:
gh pr view {{pr}} --web
# Auto-merge a PR using rebase strategy when CI passes
merge pr:
gh pr merge {{pr}} --auto --rebase
# Rebase a PR
rebase pr:
gh pr update-branch {{pr}} --rebase
# PRs that are assigned to me
assigned-to-me:
gh pr list --search "milestone:{{milestone}} assignee:@me"
# PRs that need review (no approval yet, excluding own PRs)
review-required:
gh pr list --search "milestone:{{milestone}} review:required -author:@me"
# PRs waiting on contributor to address feedback
waiting-on-contributor:
gh pr list --search "milestone:{{milestone}} review:changes_requested"
# Approved PRs that need branch cleanup before merging
needs-fixup:
gh pr list --label "needs fixup" --search "milestone:{{milestone}} review:approved"
# PRs approved by egli but not yet by bertfrees
waiting-for-bert:
gh pr list --search "milestone:{{milestone}} review:approved reviewed-by:egli -reviewed-by:bertfrees"
# Merged PRs that still need a NEWS entry
needs-news:
gh pr list --state merged --label "needs news" --search "milestone:{{milestone}}"