newModuleTagger: add --before|--after

This commit is contained in:
2026-07-30 14:57:26 +09:00
parent 810fb189bc
commit 3907e4c594
+22 -3
View File
@@ -82,10 +82,15 @@ def parse_args():
state_group.add_argument('--open', action='store_true', help='Only show open PRs')
state_group.add_argument('--merged', action='store_true', help='Only show merged PRs')
state_group.add_argument('--closed', action='store_true', help='Only show closed (unmerged) PRs')
return parser.parse_args()
parser.add_argument('--before', type=int, metavar='PR_NUMBER', help='Only show PRs with a number lower than this (i.e. created earlier)')
parser.add_argument('--after', type=int, metavar='PR_NUMBER', help='Only show PRs with a number higher than this (i.e. created later)')
args = parser.parse_args()
if args.before is not None and args.after is not None:
assert args.after < args.before, '--after must be lower than --before'
return args
def find_prs_without_new_module_tag(state_filter: str | None):
def find_prs_without_new_module_tag(state_filter: str | None, before: int | None, after: int | None):
hasNextPage = True
endCursor = None
@@ -101,6 +106,7 @@ def find_prs_without_new_module_tag(state_filter: str | None):
endCursor = data['pageInfo']['endCursor']
hasNextPage = data['pageInfo']['hasNextPage']
prs = [pr['node'] for pr in data['edges']]
page_numbers = [pr['number'] for pr in prs]
prs = [{
'createdAt': pr['createdAt'],
'state': pr['state'],
@@ -114,11 +120,24 @@ def find_prs_without_new_module_tag(state_filter: str | None):
prs = [pr for pr in prs if not any(label == '8.has: module (new)' for label in pr['labels'])]
prs = [pr for pr in prs if any(file['changeType'] == 'ADDED' and file['path'].startswith('nixos/modules') for file in pr['files'])]
# Results are ordered by number/createdAt descending, so once every PR
# in a page is below the `after` bound, no later page can contain a match.
if after is not None and page_numbers and all(number <= after for number in page_numbers):
hasNextPage = False
if before is not None:
prs = [pr for pr in prs if pr['number'] < before]
if after is not None:
prs = [pr for pr in prs if pr['number'] > after]
for pr in reversed(prs):
print_pr(pr)
pbar.update(PAGINATION_STEP)
if not hasNextPage:
break
STATUS_COLORS = {
'OPEN': "\033[1;32mOPEN\033[0m",
'MERGED': "\033[1;35mMERGED\033[0m",
@@ -213,4 +232,4 @@ def print_pr(pr: dict[str, any]):
if __name__ == "__main__":
args = parse_args()
state_filter = 'OPEN' if args.open else 'MERGED' if args.merged else 'CLOSED' if args.closed else None
find_prs_without_new_module_tag(state_filter)
find_prs_without_new_module_tag(state_filter, args.before, args.after)