newModuleTagger: add --before|--after
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user