Example #1
0
    def add_arguments(self, parser, cli_name):
        self._subparser = parser

        # get verb extensions and let them add their arguments
        verb_extensions = get_verb_extensions('ros2bag.verb')
        add_subparsers(
            parser, cli_name, '_verb', verb_extensions, required=False)
Example #2
0
    def add_arguments(self, parser, cli_name):
        parser.add_argument('--include-hidden-services',
                            action='store_true',
                            help='Consider hidden services as well')

        # get verb extensions and let them add their arguments
        verb_extensions = get_verb_extensions('ros2service.verb')
        add_subparsers(parser, cli_name, '_verb', verb_extensions)
Example #3
0
 def add_arguments(self, parser, cli_name):
     self._subparser = parser
     verb_extension = get_verb_extensions('ros2interface.verb')
     add_subparsers(parser,
                    cli_name,
                    '_verb',
                    verb_extension,
                    required=False)
Example #4
0
    def add_arguments(self, parser, cli_name):
        self._subparser = parser
        parser.add_argument('--include-hidden-topics',
                            action='store_true',
                            help='Consider hidden topics as well')

        # get verb extensions and let them add their arguments
        verb_extensions = get_verb_extensions('ros2topic.verb')
        add_subparsers(parser,
                       cli_name,
                       '_verb',
                       verb_extensions,
                       required=False)
Example #5
0
def main(*, script_name='ros2', argv=None, description=None, extension=None):
    if description is None:
        description = '{script_name} is an extensible command-line tool for ' \
            'ROS 2.'.format_map(locals())

    # top level parser
    parser = argparse.ArgumentParser(
        description=description,
        formatter_class=argparse.RawDescriptionHelpFormatter)

    # add arguments for command extension(s)
    if extension:
        extension.add_arguments(parser, script_name)
    else:
        # get command extensions
        extensions = get_command_extensions('ros2cli.command')
        selected_extension_key = '_command'
        add_subparsers(
            parser,
            script_name,
            selected_extension_key,
            extensions,
            # hide the special commands in the help
            hide_extensions=['extension_points', 'extensions'])

    # register argcomplete hook if available
    try:
        from argcomplete import autocomplete
    except ImportError:
        pass
    else:
        autocomplete(parser, exclude=['-h', '--help'])

    # parse the command line arguments
    args = parser.parse_args(args=argv)

    if extension is None:
        # the attribute should always exist
        # otherwise argparse should have exited
        extension = getattr(args, selected_extension_key)

    # call the main method of the extension
    try:
        rc = extension.main(parser=parser, args=args)
    except KeyboardInterrupt:
        rc = signal.SIGINT
    except RuntimeError as e:
        rc = str(e)
    return rc
Example #6
0
 def add_arguments(self, parser, cli_name):
     # get verb extensions and let them add their arguments
     verb_extensions = get_verb_extensions('ros2msg.verb')
     add_subparsers(parser, cli_name, '_verb', verb_extensions)