def main(): """Main function""" args = _parse_args() if args.gerrit: args.gerrit = normalize_gerrit_name(args.gerrit) else: try: args.gerrit = find_gerrit_name() # pylint: disable=bare-except except: print('gerrit instance not found, use [-g GERRIT]') sys.exit(1) # Query change lists url_opener = create_url_opener_from_args(args) change_lists = query_change_lists(url_opener, args.gerrit, args.query, args.limits) # Download patch files num_changes = len(change_lists) num_changes_width = len(str(num_changes)) for i, change in enumerate(change_lists, start=1): print('{:>{}}/{} | {} {}'.format(i, num_changes_width, num_changes, change['_number'], change['subject'])) patch_file = get_patch(url_opener, args.gerrit, change['id']) with open('{}.patch'.format(change['_number']), 'wb') as output_file: output_file.write(patch_file)
def main(): """Main function""" args = _parse_args() if not args.gerrit: try: args.gerrit = find_gerrit_name() except: print('gerrit instance not found, use [-g GERRIT]') sys.exit(1) if args.command == 'json': _main_json(args) elif args.command == 'bash': _main_bash(args) elif args.command == 'pull': _main_pull(args) else: raise KeyError('unknown command')
def main(): """Set review labels to selected change lists""" # Parse and check the command line options args = _parse_args() if args.gerrit: args.gerrit = normalize_gerrit_name(args.gerrit) else: try: args.gerrit = find_gerrit_name() # pylint: disable=bare-except except: print('gerrit instance not found, use [-g GERRIT]') sys.exit(1) if not _has_task(args): print( 'error: Either --label, --message, --submit, --abandon, --restore, ' '--add-hashtag, --remove-hashtag, --set-topic, --delete-topic, ' '--add-reviewer or --delete-reviewer must be specified', file=sys.stderr) sys.exit(1) # Convert label arguments labels = _get_labels_from_args(args) # Convert reviewer arguments new_reviewers = [{'reviewer': name} for name in args.add_reviewer] # Load authentication credentials url_opener = create_url_opener_from_args(args) # Retrieve change lists change_lists = query_change_lists(url_opener, args.gerrit, args.query, args.limits) if not change_lists: print('error: No matching change lists.', file=sys.stderr) sys.exit(1) # Print matching lists _print_change_lists(change_lists, file=sys.stdout) # Confirm _confirm('Do you want to continue?') # Post review votes errors = {'num_errors': 0} for change in change_lists: if args.label or args.message: _do_task(change, set_review, url_opener, args.gerrit, change['id'], labels, args.message, errors=errors) if args.add_hashtag or args.remove_hashtag: _do_task(change, set_hashtags, url_opener, args.gerrit, change['id'], args.add_hashtag, args.remove_hashtag, errors=errors) if args.set_topic: _do_task(change, set_topic, url_opener, args.gerrit, change['id'], args.set_topic, errors=errors) if args.delete_topic: _do_task(change, delete_topic, url_opener, args.gerrit, change['id'], expected_http_code=204, errors=errors) if args.submit: _do_task(change, submit, url_opener, args.gerrit, change['id'], errors=errors) if args.abandon: _do_task(change, abandon, url_opener, args.gerrit, change['id'], args.abandon, errors=errors) if args.restore: _do_task(change, restore, url_opener, args.gerrit, change['id'], errors=errors) if args.add_reviewer: _do_task(change, add_reviewers, url_opener, args.gerrit, change['id'], new_reviewers, errors=errors) for name in args.delete_reviewer: _do_task(change, delete_reviewer, url_opener, args.gerrit, change['id'], name, expected_http_code=204, errors=errors) if errors['num_errors']: sys.exit(1)