Exemple #1
0
def main(argv=None, tree=None):
    if argv:
        sys.argv = [sys.argv[0]] + argv
    if len(sys.argv) < 2:
        # Change to the root dir
        print '{0} {1}{3}{2}/{2}'.format(SET_CMD, path.ENV_VAR, QUOTE, EQUALS)
        return 0

    # Take the first argument only
    cmd_path = sys.argv[1]

    try:
        if cmd_path == '.' or cmd_path == './':
            # Special case for '.': do nothing
            if path.ENV_VAR in os.environ:
                print make_cmd_line(os.environ[path.ENV_VAR])
            else:
                print make_cmd_line('/')
        elif cmd_path == '..' or cmd_path == '../':
            # Special case for '..': go up one directory
            if path.ENV_VAR in os.environ and os.environ[path.ENV_VAR] and \
                    os.environ[path.ENV_VAR] != '/':
                parent = os.environ[path.ENV_VAR][\
                        :os.environ[path.ENV_VAR].rstrip('/').rfind('/')]
                if not parent:
                    parent = '/'
                print make_cmd_line(parent)
            else:
                print make_cmd_line('/')
        else:
            full_path = path.cmd_path_to_full_path(cmd_path)
            print cd(cmd_path, full_path)
    except Exception, e:
        print >> sys.stderr, 'rtcwd: {0}'.format(e)
        return 1
Exemple #2
0
def main(argv=None, tree=None):
    if argv:
        sys.argv = [sys.argv[0]] + argv
    if len(sys.argv) < 2:
        # Change to the root dir
        print '{0} {1}{3}{2}/{2}'.format(SET_CMD, path.ENV_VAR, QUOTE, EQUALS)
        return 0

    # Take the first argument only
    cmd_path = sys.argv[1]

    try:
        if cmd_path == '.' or cmd_path == './':
            # Special case for '.': do nothing
            if path.ENV_VAR in os.environ:
                print make_cmd_line(os.environ[path.ENV_VAR])
            else:
                print make_cmd_line('/')
        elif cmd_path == '..' or cmd_path == '../':
            # Special case for '..': go up one directory
            if path.ENV_VAR in os.environ and os.environ[path.ENV_VAR] and \
                    os.environ[path.ENV_VAR] != '/':
                parent = os.environ[path.ENV_VAR][\
                        :os.environ[path.ENV_VAR].rstrip('/').rfind('/')]
                if not parent:
                    parent = '/'
                print make_cmd_line(parent)
            else:
                print make_cmd_line('/')
        else:
            full_path = path.cmd_path_to_full_path(cmd_path)
            print cd(cmd_path, full_path)
    except Exception, e:
        print >>sys.stderr, 'rtcwd: {0}'.format(e)
        return 1
Exemple #3
0
def main(argv=None, tree=None):
    cmdkind = FSM_CMDS.keys()
    usage = '''Usage: %prog [options] <component path> [getstate|get[set]eventprofiles|get[set]structure]
Configure FSM behavior of the component.'''
    parser = argparse.ArgumentParser(prog='rtfsm', description='Configure FSM behavior of the component.')
    parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
            default=False,
            help='Output verbose information. [Default: %(default)s]')
    parser.add_argument('path', metavar='path', type=str, nargs=1,
            help='Path to component.')
    parser.add_argument('command', metavar='command', type=str, nargs=1,
            choices=cmdkind,
            help='Select from {0}.'.format(', '.join(cmdkind)))
    parser.add_argument('argument', metavar='argument', type=str, nargs='?',
            help=
            'Command "seteventprofiles" takes profiles as the argument (e.g. "toggle:TimedShort,toggle2:TimedString"). ' +
            'Command "setstructure" takes scxml file as the argument.')

    if argv:
        sys.argv = [sys.argv[0]] + argv

    options = parser.parse_args()

    full_path = path.cmd_path_to_full_path(options.path[0])
    
    command = options.command[0]
    argument = None
    if command == 'seteventprofiles':
        if options.argument is None:
            print('{0}: No argument to {1} command '\
                'specified.'.format(sys.argv[0], command), file=sys.stderr)
            return 1
        argument = []
        for p in options.argument.split(','):
            argument.append(p.split(':'))
    elif command == 'setstructure':
        if options.argument is None:
            print('{0}: No argument to {1} command '\
                'specified.'.format(sys.argv[0], command), file=sys.stderr)
            return 1
        with open(options.argument, 'r') as fh:
            argument = fh.read()
        if not argument:
            print('{0}: Unable to read file {1} specified to {2} command.'\
                .format(sys.argv[0], options.argument[0], command), file=sys.stderr)
            return 1
            
    try:
        result = manage_fsm(options.path[0], full_path, command, argument, options, tree=tree)
        if result:
            print('\n'.join(result))
    except Exception as e:
        if options.verbose:
            traceback.print_exc()
        print('{0}: {1}'.format(sys.argv[0], e), file=sys.stderr)
        return 1
    return 0
Exemple #4
0
def get_paths(comps, ports):
    comp_paths = []
    port_paths = []
    for c in comps:
        fp = path.cmd_path_to_full_path(c)
        c_path, c_port = rtctree.path.parse_path(fp)
        if c_port:
            raise rts_exceptions.NotAComponentError(c)
        comp_paths.append((fp, c_path))
    for p in ports:
        fp = path.cmd_path_to_full_path(p)
        p_path, p_port = rtctree.path.parse_path(fp)
        if not p_port:
            raise rts_exceptions.NotAPortError((p_path, p_port))
        cp = fp[:fp.rfind(':')]
        if (cp, p_path) not in comp_paths:
            comp_paths.append((cp, p_path))
        port_paths.append((cp, p_path, p_port))
    return comp_paths, port_paths
Exemple #5
0
def parse_member_paths(source_paths):
    paths = []
    for p in source_paths:
        ports = []
        split = p.split(':')
        if len(split) == 2:
            p = split[0]
            ports = split[1].split(',')
        elif len(split) > 2:
            raise rtctree.exceptions.BadPathError(p)
        fp = path.cmd_path_to_full_path(p)
        c_path, ignored = rtctree.path.parse_path(fp)
        paths.append((p, c_path, ports))
    return paths
Exemple #6
0
def parse_member_paths(source_paths):
    paths = []
    for p in source_paths:
        ports = []
        split = p.split(':')
        if len(split) == 2:
            p = split[0]
            ports = split[1].split(',')
        elif len(split) > 2:
            raise rtctree.exceptions.BadPathError(p)
        fp = path.cmd_path_to_full_path(p)
        c_path, ignored = rtctree.path.parse_path(fp)
        paths.append((p, c_path, ports))
    return paths
Exemple #7
0
def main(argv=None, tree=None):
    usage = '''Usage: %prog [options] <manager:name|composite component path>
Manage composite components.'''
    version = rtshell.RTSH_VERSION
    parser = optparse.OptionParser(usage=usage, version=version)
    parser.add_option('-a', '--add', dest='add', action='append',
            type='string', default=[], help='A component to include in the '
            'composition. Specify a comma-separated list of ports to export '
            'after the component name, separated by a colon.')
    parser.add_option('-o', '--options', dest='options', action='store',
            type='string', default='', help='Extra options to pass to the '\
            'component on creation.')
    parser.add_option('-r', '--remove', dest='remove', action='append',
            type='string', default=[], help='A component or ports to remove '
            'from the composition.')
    parser.add_option('-t', '--type', dest='type', action='store',
            type='string', default='PeriodicECSharedComposite',
            help='Type of composite component to create. [Default: %default]')
    parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
            default=False,
            help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    try:
        options, args = parser.parse_args()
    except optparse.OptionError as e:
        print('OptionError:', e, file=sys.stderr)
        return 1

    if len(args) != 1:
        print('{0}: No manager or existing composite component '\
            'specified.'.format(sys.argv[0]), file=sys.stderr)
        return 1
    full_path = path.cmd_path_to_full_path(args[0])

    try:
        manage_composition(args[0], full_path, options, tree=tree)
    except Exception as e:
        if options.verbose:
            traceback.print_exc()
        print('{0}: {1}'.format(sys.argv[0], e), file=sys.stderr)
        return 1
    return 0
Exemple #8
0
    parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
            default=False,
            help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    try:
        options, args = parser.parse_args()
    except optparse.OptionError, e:
        print >>sys.stderr, 'OptionError:', e
        return 1

    if len(args) != 1:
        print >>sys.stderr, '{0}: No manager or existing composite component '\
            'specified.'.format(sys.argv[0])
        return 1
    full_path = path.cmd_path_to_full_path(args[0])

    try:
        manage_composition(args[0], full_path, options, tree=tree)
    except Exception, e:
        if options.verbose:
            traceback.print_exc()
        print >>sys.stderr, '{0}: {1}'.format(sys.argv[0], e)
        return 1
    return 0


# vim: tw=79

Exemple #9
0
def main(argv=None, tree=None):
    def cmd_cb(option, opt, val, parser):
        if not hasattr(parser.values, 'cmds'):
            setattr(parser.values, 'cmds', [])
        if opt == '-l' or opt == '--load':
            # Check the module path is correct before executing any commands
            items = re.split(':([^/]+)', val)
            if len(items) != 3:
                raise optparse.OptionValueError('No initialisation function '
                    'specified.')
            parser.values.cmds.append((load_module, items[0:2]))
        elif opt == '-c' or opt == '--create':
            parser.values.cmds.append((create_component, val))
        elif opt == '-d' or opt == '--delete':
            parser.values.cmds.append((delete_component, val))
        elif opt == '-u' or opt == '--unload':
            parser.values.cmds.append((unload_module, val))

    usage = '''Usage: %prog [options] <path>
Create and remove components with a manager.'''
    version = rtshell.RTSH_VERSION
    parser = optparse.OptionParser(usage=usage, version=version)
    parser.add_option('-c', '--create', action='callback', callback=cmd_cb,
            type='string', help='Create a new component instance from the '
            'specified loaded module. Properties of the new component an be '
            'specified after the module name prefixed with a question mark. '
            'e.g. ConsoleIn?instance_name=bleg&another_param=value')
    parser.add_option('-d', '--delete', action='callback', callback=cmd_cb,
            type='string', help='Shut down and delete the specified component '
            'instance.')
    parser.add_option('-l', '--load', action='callback', callback=cmd_cb,
            type='string', help='Load the module into the manager. An '
            'initialisation function must be specified after the module path '
            'separated by a ":".')
    parser.add_option('-u', '--unload', action='callback', callback=cmd_cb,
            type='string', help='Unload the module from the manager.')
    parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
            default=False,
            help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    options, args = parser.parse_args()

    if len(args) != 1:
        print >>sys.stderr, '{0}: No manager specified.'.format(
                os.path.basename(sys.argv[0]))
        return 1

    try:
        if args[0].startswith('corbaloc::'):
            # Direct connection to manager
            mgr = DirectManager(args[0])
        else:
            # Access via the tree
            full_path = path.cmd_path_to_full_path(args[0])
            tree, mgr = get_manager(args[0], full_path, tree)

        if not hasattr(options, 'cmds'):
            print >>sys.stderr, '{0}: No commands specified.'.format(
                    os.path.basename(sys.argv[0]))
            return 1

        for c in options.cmds:
            c[0](mgr, c[1])
    except Exception, e:
        if options.verbose:
            traceback.print_exc()
        print >>sys.stderr, '{0}: {1}'.format(os.path.basename(sys.argv[0]), e)
        return 1
Exemple #10
0
def main(argv=None, tree=None):
    cmdkind = FSM_CMDS.keys()
    usage = '''Usage: %prog [options] <component path> [getstate|get[set]eventprofiles|get[set]structure]
Configure FSM behavior of the component.'''
    parser = argparse.ArgumentParser(
        prog='rtfsm', description='Configure FSM behavior of the component.')
    parser.add_argument(
        '-v',
        '--verbose',
        dest='verbose',
        action='store_true',
        default=False,
        help='Output verbose information. [Default: %(default)s]')
    parser.add_argument('path',
                        metavar='path',
                        type=str,
                        nargs=1,
                        help='Path to component.')
    parser.add_argument('command',
                        metavar='command',
                        type=str,
                        nargs=1,
                        choices=cmdkind,
                        help='Select from {0}.'.format(', '.join(cmdkind)))
    parser.add_argument(
        'argument',
        metavar='argument',
        type=str,
        nargs='?',
        help=
        'Command "seteventprofiles" takes profiles as the argument (e.g. "toggle:TimedShort,toggle2:TimedString"). '
        + 'Command "setstructure" takes scxml file as the argument.')

    if argv:
        sys.argv = [sys.argv[0]] + argv

    options = parser.parse_args()

    full_path = path.cmd_path_to_full_path(options.path[0])

    command = options.command[0]
    argument = None
    if command == 'seteventprofiles':
        if options.argument is None:
            print('{0}: No argument to {1} command '\
                'specified.'.format(sys.argv[0], command), file=sys.stderr)
            return 1
        argument = []
        for p in options.argument.split(','):
            argument.append(p.split(':'))
    elif command == 'setstructure':
        if options.argument is None:
            print('{0}: No argument to {1} command '\
                'specified.'.format(sys.argv[0], command), file=sys.stderr)
            return 1
        with open(options.argument, 'r') as fh:
            argument = fh.read()
        if not argument:
            print('{0}: Unable to read file {1} specified to {2} command.'\
                .format(sys.argv[0], options.argument[0], command), file=sys.stderr)
            return 1

    try:
        result = manage_fsm(options.path[0],
                            full_path,
                            command,
                            argument,
                            options,
                            tree=tree)
        if result:
            print('\n'.join(result))
    except Exception as e:
        if options.verbose:
            traceback.print_exc()
        print('{0}: {1}'.format(sys.argv[0], e), file=sys.stderr)
        return 1
    return 0
Exemple #11
0
def main(argv=None, tree=None):
    def cmd_cb(option, opt, val, parser):
        if not hasattr(parser.values, 'cmds'):
            setattr(parser.values, 'cmds', [])
        if opt == '-l' or opt == '--load':
            # Check the module path is correct before executing any commands
            items = re.split(':([^/]+)', val)
            if len(items) != 3:
                raise optparse.OptionValueError('No initialisation function '
                                                'specified.')
            parser.values.cmds.append((load_module, items[0:2]))
        elif opt == '-c' or opt == '--create':
            parser.values.cmds.append((create_component, val))
        elif opt == '-d' or opt == '--delete':
            parser.values.cmds.append((delete_component, val))
        elif opt == '-u' or opt == '--unload':
            parser.values.cmds.append((unload_module, val))

    usage = '''Usage: %prog [options] <path>
Create and remove components with a manager.'''
    version = rtshell.RTSH_VERSION
    parser = optparse.OptionParser(usage=usage, version=version)
    parser.add_option(
        '-c',
        '--create',
        action='callback',
        callback=cmd_cb,
        type='string',
        help='Create a new component instance from the '
        'specified loaded module. Properties of the new component an be '
        'specified after the module name prefixed with a question mark. '
        'e.g. ConsoleIn?instance_name=bleg&another_param=value')
    parser.add_option('-d',
                      '--delete',
                      action='callback',
                      callback=cmd_cb,
                      type='string',
                      help='Shut down and delete the specified component '
                      'instance.')
    parser.add_option(
        '-l',
        '--load',
        action='callback',
        callback=cmd_cb,
        type='string',
        help='Load the module into the manager. An '
        'initialisation function must be specified after the module path '
        'separated by a ":".')
    parser.add_option('-u',
                      '--unload',
                      action='callback',
                      callback=cmd_cb,
                      type='string',
                      help='Unload the module from the manager.')
    parser.add_option('-v',
                      '--verbose',
                      dest='verbose',
                      action='store_true',
                      default=False,
                      help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    options, args = parser.parse_args()

    if len(args) != 1:
        print('{0}: No manager specified.'.format(os.path.basename(
            sys.argv[0])),
              file=sys.stderr)
        return 1

    try:
        if args[0].startswith('corbaloc::'):
            # Direct connection to manager
            mgr = DirectManager(args[0])
        else:
            # Access via the tree
            full_path = path.cmd_path_to_full_path(args[0])
            tree, mgr = get_manager(args[0], full_path, tree)

        if not hasattr(options, 'cmds'):
            print('{0}: No commands specified.'.format(
                os.path.basename(sys.argv[0])),
                  file=sys.stderr)
            return 1

        for c in options.cmds:
            c[0](mgr, c[1])
    except Exception as e:
        if options.verbose:
            traceback.print_exc()
        print('{0}: {1}'.format(os.path.basename(sys.argv[0]), e),
              file=sys.stderr)
        return 1
    return 0
Exemple #12
0
                      dest='verbose',
                      action='store_true',
                      default=False,
                      help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    try:
        options, args = parser.parse_args()
    except optparse.OptionError, e:
        print >> sys.stderr, 'OptionError:', e
        return 1

    if len(args) != 1:
        print >>sys.stderr, '{0}: No manager or existing composite component '\
            'specified.'.format(sys.argv[0])
        return 1
    full_path = path.cmd_path_to_full_path(args[0])

    try:
        manage_composition(args[0], full_path, options, tree=tree)
    except Exception, e:
        if options.verbose:
            traceback.print_exc()
        print >> sys.stderr, '{0}: {1}'.format(sys.argv[0], e)
        return 1
    return 0


# vim: tw=79
Exemple #13
0
def main(argv=None, tree=None):
    usage = '''Usage: %prog [options] <manager:name|composite component path>
Manage composite components.'''
    version = rtshell.RTSH_VERSION
    parser = optparse.OptionParser(usage=usage, version=version)
    parser.add_option(
        '-a',
        '--add',
        dest='add',
        action='append',
        type='string',
        default=[],
        help='A component to include in the '
        'composition. Specify a comma-separated list of ports to export '
        'after the component name, separated by a colon.')
    parser.add_option('-o', '--options', dest='options', action='store',
            type='string', default='', help='Extra options to pass to the '\
            'component on creation.')
    parser.add_option('-r',
                      '--remove',
                      dest='remove',
                      action='append',
                      type='string',
                      default=[],
                      help='A component or ports to remove '
                      'from the composition.')
    parser.add_option(
        '-t',
        '--type',
        dest='type',
        action='store',
        type='string',
        default='PeriodicECSharedComposite',
        help='Type of composite component to create. [Default: %default]')
    parser.add_option('-v',
                      '--verbose',
                      dest='verbose',
                      action='store_true',
                      default=False,
                      help='Output verbose information. [Default: %default]')

    if argv:
        sys.argv = [sys.argv[0]] + argv
    try:
        options, args = parser.parse_args()
    except optparse.OptionError as e:
        print('OptionError:', e, file=sys.stderr)
        return 1

    if len(args) != 1:
        print('{0}: No manager or existing composite component '\
            'specified.'.format(sys.argv[0]), file=sys.stderr)
        return 1
    full_path = path.cmd_path_to_full_path(args[0])

    try:
        manage_composition(args[0], full_path, options, tree=tree)
    except Exception as e:
        if options.verbose:
            traceback.print_exc()
        print('{0}: {1}'.format(sys.argv[0], e), file=sys.stderr)
        return 1
    return 0