def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_hide_empty=True, skip_nested=True, path_nargs='?', path_help='Base path to clone repositories to') args = parser.parse_args(args) try: repos = get_repositories(args.input) except RuntimeError as e: print(ansi('redf') + str(e) + ansi('reset'), file=sys.stderr) return 1 jobs = generate_jobs(repos, args) add_dependencies(jobs) if args.repos: output_repositories([job['client'] for job in jobs]) results = execute_jobs(jobs, show_progress=True, number_of_workers=args.workers, debug_jobs=args.debug) output_results(results) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments( parser, skip_hide_empty=True, skip_nested=True, single_path=True, path_help='Base path to clone repositories to') args = parser.parse_args(args) try: repos = get_repositories(args.input) except RuntimeError as e: print(ansi('redf') + str(e) + ansi('reset'), file=sys.stderr) return 1 jobs = generate_jobs(repos, args) add_dependencies(jobs) if args.repos: output_repositories([job['client'] for job in jobs]) results = execute_jobs( jobs, show_progress=True, number_of_workers=args.workers, debug_jobs=args.debug) output_results(results) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) # no help to extract command first (which might be followed by --help) parser = get_parser(add_help=False) ns, _ = parser.parse_known_args(args) # help for a specific command if ns.command: # relay help request foe specific command entrypoint = get_entrypoint(ns.command) if not entrypoint: return 1 return entrypoint(['--help']) # regular parsing validating options and arguments parser = get_parser() ns = parser.parse_args(args) if ns.clients: print('The available VCS clients are:') for client in vcstool_clients: print(' ' + client.type) return 0 if ns.commands: print(' '.join([cmd.command for cmd in vcstool_commands])) return 0 # output detailed command list parser = get_parser_with_command_only() parser.print_help() return 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_hide_empty=True, path_nargs='?') args = parser.parse_args(args) command = ExportCommand(args) clients = find_repositories(command.paths, nested=command.nested) if command.output_repos: output_repositories(clients) jobs = generate_jobs(clients, command) results = execute_jobs(jobs, number_of_workers=args.workers) # check if at least one repo was found in the client directory basename = None for result in results: result['path'] = get_relative_path_of_result(result) if result['path'] == '.': basename = os.path.basename(os.path.abspath(result['client'].path)) # in that case prefix all relative paths with the client directory basename if basename is not None: for result in results: if result['path'] == '.': result['path'] = basename else: result['path'] = os.path.join(basename, result['path']) print('repositories:') output_results(results, output_handler=output_export_data) output_results(results, output_handler=output_error_information) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) # no help to extract command first (which might be followed by --help) parser = get_parser(add_help=False) ns, _ = parser.parse_known_args(args) # help for a specific command if ns.command: # relay help request foe specific command entrypoint = get_entrypoint(ns.command) if not entrypoint: return 1 return entrypoint(['--help']) # regular parsing validating options and arguments parser = get_parser() ns = parser.parse_args(args) if ns.clients: print('The available VCS clients are:') for client in vcstool_clients: print(' ' + client.type) return 0 if ns.commands: print(' '.join([cmd.command for cmd in vcstool_commands])) return 0 # output detailed command list parser = get_parser_with_command_only() parser.print_help() return 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser) # separate anything followed after --args to not confuse argparse if args is None: args = sys.argv[1:] try: index = args.index('--args') + 1 except ValueError: # should generate error due to missing --args parser.parse_known_args(args) client_args = args[index:] args = parser.parse_args(args[0:index]) args.args = client_args # check if any client type is specified any_client_type = False for client in vcstool_clients: if client.type in args and args.__dict__[client.type]: any_client_type = True break # if no client type is specified enable all client types if not any_client_type: for client in vcstool_clients: if client.type in args: args.__dict__[client.type] = True command = CustomCommand(args) # filter repositories by specified client types clients = find_repositories(command.paths, nested=command.nested) clients = [c for c in clients if c.type in args and args.__dict__[c.type]] if command.output_repos: output_repositories(clients) jobs = generate_jobs(clients, command) results = execute_jobs(jobs, show_progress=True, number_of_workers=args.workers, debug_jobs=args.debug) output_results(results, hide_empty=args.hide_empty) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_hide_empty=True, path_nargs='?') args = parser.parse_args(args) command = ExportCommand(args) clients = find_repositories(command.paths, nested=command.nested) if command.output_repos: output_repositories(clients) jobs = generate_jobs(clients, command) results = execute_jobs(jobs, number_of_workers=args.workers) print('repositories:') output_results(results, output_handler=output_export_data) output_results(results, output_handler=output_error_information) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_hide_empty=True, single_path=True) args = parser.parse_args(args) command = ExportCommand(args) clients = find_repositories(command.paths, nested=command.nested) if command.output_repos: output_repositories(clients) jobs = generate_jobs(clients, command) results = execute_jobs(jobs, number_of_workers=args.workers) print('repositories:') output_results(results, output_handler=output_export_data) output_results(results, output_handler=output_error_information) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_nested=True, path_nargs=False) parser.add_argument('--packages_txt_file', type=argparse.FileType('r')) args = parser.parse_args() pkg_name_list = args.packages_txt_file.read().split('\n') try: ros2_repos = get_repositories(args.input) except RuntimeError as e: print(ansi('redf') + str(e) + ansi('reset'), file=sys.stderr) return 1 vcs_format_repo_list = {} for repo_name in get_proposed_packages_repo_names(pkg_name_list): vcs_format_repo_list[repo_name] = ros2_repos[repo_name] print(yaml.dump(vcs_format_repo_list))
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) # no help to extract command first (which might be followed by --help) parser = get_parser(add_help=False) ns, _ = parser.parse_known_args(args) args = args if args is not None else sys.argv[1:] # relay to specific command if ns.command and ns.command != 'help': entrypoint = get_entrypoint(ns.command) if not entrypoint: return 1 args.remove(ns.command) return entrypoint(args) # remove help command if specified if ns.command: args.remove(ns.command) return help_main(args)
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) # no help to extract command first (which might be followed by --help) parser = get_parser(add_help=False) ns, _ = parser.parse_known_args(args) args = args if args is not None else sys.argv[1:] # relay to specific command if ns.command and ns.command != 'help': entrypoint = get_entrypoint(ns.command) if not entrypoint: return 1 args.remove(ns.command) return entrypoint(args) # remove help command if specified if ns.command: args.remove(ns.command) return help_main(args)
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() return simple_main(parser, PushCommand, args)
def main(args=None, stdout=None, stderr=None): set_streams(stdout=stdout, stderr=stderr) parser = get_parser() add_common_arguments(parser, skip_hide_empty=True, skip_nested=True, path_nargs='?', path_help='Base path to clone repositories to') args = parser.parse_args(args) try: input_ = args.input if isinstance(input_, request.Request): input_ = request.urlopen(input_) repos = get_repositories(input_) except (RuntimeError, request.URLError) as e: print(ansi('redf') + str(e) + ansi('reset'), file=sys.stderr) return 1 jobs = generate_jobs(repos, args) add_dependencies(jobs) if args.repos: output_repositories([job['client'] for job in jobs]) workers = args.workers # for ssh URLs check if the host is known to prevent ssh asking for # confirmation when using more than one worker if workers > 1: ssh_keygen = None checked_hosts = set() for job in list(jobs): if job['command'] is None: continue url = job['command'].url # only check the host from a ssh URL if not url.startswith('git@') or ':' not in url: continue host = url[4:].split(':', 1)[0] # only check each host name once if host in checked_hosts: continue checked_hosts.add(host) # get ssh-keygen path once if ssh_keygen is None: ssh_keygen = which('ssh-keygen') or False if not ssh_keygen: continue result = run_command([ssh_keygen, '-F', host], '') if result['returncode']: print('At least one hostname (%s) is unknown, switching to a ' 'single worker to allow interactively answering the ssh ' 'question to confirm the fingerprint' % host) workers = 1 break results = execute_jobs(jobs, show_progress=True, number_of_workers=workers, debug_jobs=args.debug) output_results(results) any_error = any(r['returncode'] for r in results) return 1 if any_error else 0