def wstool_main(argv=None, usage=None): """ Calls the function corresponding to the first argument. :param argv: sys.argv by default :param usage: function printing usage string, multiproject_cli.list_usage by default """ if argv is None: argv = sys.argv if (sys.argv[0] == '-c'): sys.argv = [_PROGNAME] + sys.argv[1:] if '--version' in argv: print("%s: \t%s\n%s" % (_PROGNAME, wstool.__version__.version, multiproject_cmd.cmd_version())) sys.exit(0) if not usage: usage = lambda: print(list_usage(progname=_PROGNAME, description=__doc__, command_keys=__MULTIPRO_CMD_HELP_LIST__, command_helps=__MULTIPRO_CMD_DICT__, command_aliases=__MULTIPRO_CMD_ALIASES__)) workspace = None if len(argv) < 2: try: workspace = get_workspace(argv, os.getcwd(), config_filename=ROSINSTALL_FILENAME) argv.append('info') except MultiProjectException as e: print(str(e)) usage() return 0 if argv[1] in ['--help', '-h']: usage() return 0 try: command = argv[1] args = argv[2:] if command == 'help': if len(argv) < 3: usage() return 0 else: command = argv[2] args = argv[3:] args.insert(0, "--help") # help help if command == 'help': usage() return 0 cli = WstoolCLI(progname=_PROGNAME) # commands for which we do not infer target workspace commands = {'init': cli.cmd_init} # commands which work on a workspace ws_commands = { 'info': cli.cmd_info, 'remove': cli.cmd_remove, 'set': cli.cmd_set, 'merge': cli.cmd_merge, 'diff': cli.cmd_diff, 'status': cli.cmd_status, 'update': cli.cmd_update} for label in list(ws_commands.keys()): if label in __MULTIPRO_CMD_ALIASES__: ws_commands[__MULTIPRO_CMD_ALIASES__[label]] = ws_commands[label] if command not in commands and command not in ws_commands: if os.path.exists(command): args = ['-t', command] + args command = 'info' else: if command.startswith('-'): print("First argument must be name of a command: %s" % command) else: print("Error: unknown command: %s" % command) usage() return 1 if command in commands: return commands[command](args) else: if workspace is None and not '--help' in args and not '-h' in args: workspace = get_workspace(args, os.getcwd(), config_filename=ROSINSTALL_FILENAME) return ws_commands[command](workspace, args) except KeyboardInterrupt: return 1
def wstool_main(argv=None, usage=None): """ Calls the function corresponding to the first argument. :param argv: sys.argv by default :param usage: function printing usage string, multiproject_cli.list_usage by default """ if argv is None: argv = sys.argv if (sys.argv[0] == '-c'): sys.argv = [_PROGNAME] + sys.argv[1:] if '--version' in argv: print("%s: \t%s\n%s" % (_PROGNAME, wstool.__version__.version, multiproject_cmd.cmd_version())) sys.exit(0) if not usage: usage = lambda: print( list_usage(progname=_PROGNAME, description=__doc__, command_keys=__MULTIPRO_CMD_HELP_LIST__, command_helps=__MULTIPRO_CMD_DICT__, command_aliases=__MULTIPRO_CMD_ALIASES__)) workspace = None if len(argv) < 2: try: workspace = get_workspace(argv, os.getcwd(), config_filename=ROSINSTALL_FILENAME) argv.append('info') except MultiProjectException as e: print(str(e)) usage() return 0 if argv[1] in ['--help', '-h']: usage() return 0 try: command = argv[1] args = argv[2:] if command == 'help': if len(argv) < 3: usage() return 0 else: command = argv[2] args = argv[3:] args.insert(0, "--help") # help help if command == 'help': usage() return 0 cli = WstoolCLI(progname=_PROGNAME) # commands for which we do not infer target workspace commands = {'init': cli.cmd_init} # commands which work on a workspace ws_commands = { 'info': cli.cmd_info, 'remove': cli.cmd_remove, 'set': cli.cmd_set, 'merge': cli.cmd_merge, 'export': cli.cmd_export, 'diff': cli.cmd_diff, 'foreach': cli.cmd_foreach, 'scrape': cli.cmd_scrape, 'status': cli.cmd_status, 'update': cli.cmd_update } for label in list(ws_commands.keys()): if label in __MULTIPRO_CMD_ALIASES__: ws_commands[ __MULTIPRO_CMD_ALIASES__[label]] = ws_commands[label] if command not in commands and command not in ws_commands: if os.path.exists(command): args = ['-t', command] + args command = 'info' else: if command.startswith('-'): print("First argument must be name of a command: %s" % command) else: print("Error: unknown command: %s" % command) usage() return 1 if command in commands: return commands[command](args) else: if workspace is None and not '--help' in args and not '-h' in args: workspace = get_workspace(args, os.getcwd(), config_filename=ROSINSTALL_FILENAME) return ws_commands[command](workspace, args) except KeyboardInterrupt: return 1