def test_myargv(): orig_argv = sys.argv try: from rosgraph import myargv args = myargv() assert args == sys.argv assert ['foo', 'bar', 'baz'] == myargv(['foo','bar', 'baz']) assert ['-foo', 'bar', '-baz'] == myargv(['-foo','bar', '-baz']) assert ['foo'] == myargv(['foo','bar:=baz']) assert ['foo'] == myargv(['foo','-bar:=baz']) finally: sys.argv = orig_argv
def resolve_launch_arguments(args): """ Resolve command-line args to roslaunch filenames. :returns: resolved filenames, ``[str]`` """ # strip remapping args for processing args = rosgraph.myargv(args) # user can either specify: # - filename + launch args # - package + relative-filename + launch args if not args: return args resolved_args = None top = args[0] if os.path.isfile(top): resolved_args = [top] + args[1:] elif len(args) == 1: raise roslaunch.core.RLException("[%s] does not exist. please specify a package and launch file"%(top)) else: try: resolved = roslib.packages.find_resource(top, args[1]) if len(resolved) == 1: resolved = resolved[0] elif len(resolved) > 1: raise roslaunch.core.RLException("multiple files named [%s] in package [%s]:%s\nPlease specify full path instead" % (args[1], top, ''.join(['\n- %s' % r for r in resolved]))) except rospkg.ResourceNotFound as e: raise roslaunch.core.RLException("[%s] is not a package or launch file name"%top) if not resolved: raise roslaunch.core.RLException("cannot locate [%s] in package [%s]"%(args[1], top)) else: resolved_args = [resolved] + args[2:] return resolved_args
def parse_argument(argv): """ argument parser for roswww server configuration """ parser = argparse.ArgumentParser(description="ROSWWW Server") parser.add_argument('-n', '--name', default='80', help='Webserver name') parser.add_argument('-p', '--port', default='80', help='Webserver Port number') parser.add_argument('-w', '--webpath', default='www', help='package relative path to web pages') parser.add_argument('--start_port', default='8000', help='setting up port scan range') parser.add_argument('--end_port', default='9000', help='setting up port scan range') myargs = rosgraph.myargv(sys.argv[1:]) # strips ros arguements parsed_args = parser.parse_args(myargs) return parsed_args.name, parsed_args.webpath, (parsed_args.port, parsed_args.start_port, parsed_args.end_port)
def parse_arguments(): """ Argument parser for the rocon_launch script. """ parser = argparse.ArgumentParser(description="Rocon's multi-roslauncher.") terminal_group = parser.add_mutually_exclusive_group() terminal_group.add_argument( '-k', '--konsole', default=False, action='store_true', help='spawn individual ros systems via multiple konsole terminals') terminal_group.add_argument( '-g', '--gnome', default=False, action='store_true', help='spawn individual ros systems via multiple gnome terminals') parser.add_argument('--screen', action='store_true', help='run each roslaunch with the --screen option') parser.add_argument('--no-terminals', action='store_true', help='do not spawn terminals for each roslaunch') parser.add_argument( '--hold', action='store_true', help= 'hold terminals open after upon completion (incompatible with --no-terminals)' ) # Force package, launcher pairs, I like this better than roslaunch style which is a bit vague parser.add_argument( 'package', nargs='?', default='', help='name of the package in which to find the concert launcher') parser.add_argument( 'launcher', nargs=1, help='name of the concert launch configuration (xml) file') #parser.add_argument('launchers', nargs='+', help='package and concert launch configuration (xml) file configurations, roslaunch style') mappings = rosgraph.names.load_mappings( sys.argv) # gets the arg mappings, e.g. scheduler_type:=simple argv = rosgraph.myargv(sys.argv[1:]) # strips the mappings args = parser.parse_args(argv) if args.no_terminals: args.terminal_name = terminals.active elif args.konsole: args.terminal_name = terminals.konsole elif args.gnome: args.terminal_name = terminals.gnome_terminal else: args.terminal_name = None return (args, mappings)
def resolve_launch_arguments(args): """ Resolve command-line args to roslaunch filenames. :returns: resolved filenames, ``[str]`` """ # strip remapping args for processing args = rosgraph.myargv(args) # user can either specify: # - filename + launch args # - package + relative-filename + launch args if not args: return args resolved_args = None # try to resolve launch file in package first if len(args) >= 2: try: resolved = roslib.packages.find_resource(args[0], args[1]) if len(resolved) > 1: raise roslaunch.core.RLException( "multiple files named [%s] in package [%s]:%s\nPlease specify full path instead" % (args[1], args[0], ''.join( ['\n- %s' % r for r in resolved]))) if len(resolved) == 1: resolved_args = [resolved[0]] + args[2:] except rospkg.ResourceNotFound: pass # try to resolve launch file if resolved_args is None and os.path.isfile(args[0]): resolved_args = [args[0]] + args[1:] # raise if unable to resolve if resolved_args is None: if len(args) >= 2: raise roslaunch.core.RLException( "[%s] is neither a launch file in package [%s] nor is [%s] a launch file name" % (args[1], args[0], args[0])) else: raise roslaunch.core.RLException("[%s] is not a launch file name" % args[0]) return resolved_args
def resolve_launch_arguments(args): """ Resolve command-line args to roslaunch filenames. :returns: resolved filenames, ``[str]`` """ # strip remapping args for processing args = rosgraph.myargv(args) # user can either specify: # - filename + launch args # - package + relative-filename + launch args if not args: return args resolved_args = None # try to resolve launch file in package first if len(args) >= 2: try: resolved = roslib.packages.find_resource(args[0], args[1]) if len(resolved) > 1: raise roslaunch.core.RLException("multiple files named [%s] in package [%s]:%s\nPlease specify full path instead" % (args[1], args[0], ''.join(['\n- %s' % r for r in resolved]))) if len(resolved) == 1: resolved_args = [resolved[0]] + args[2:] except rospkg.ResourceNotFound: pass # try to resolve launch file if resolved_args is None and (args[0] == '-' or os.path.isfile(args[0])): resolved_args = [args[0]] + args[1:] # raise if unable to resolve if resolved_args is None: if len(args) >= 2: raise roslaunch.core.RLException("[%s] is neither a launch file in package [%s] nor is [%s] a launch file name" % (args[1], args[0], args[0])) else: raise roslaunch.core.RLException("[%s] is not a launch file name" % args[0]) return resolved_args