def test_get_message_interfaces():
    # no input
    interfaces = get_message_interfaces()
    assert len(interfaces) > 0
    assert INTERFACE_PACKAGE in interfaces
    assert MESSAGE_INTERFACE_ONLY_PACKAGE in interfaces
    assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces
    assert NON_INTERFACE_PACKAGE not in interfaces
    assert len(interfaces[INTERFACE_PACKAGE]) > 0

    # one package
    interfaces = get_message_interfaces([INTERFACE_PACKAGE])
    assert len(interfaces) > 0
    assert INTERFACE_PACKAGE in interfaces
    assert MESSAGE_INTERFACE_ONLY_PACKAGE not in interfaces
    assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces
    assert NON_INTERFACE_PACKAGE not in interfaces
    assert len(interfaces[INTERFACE_PACKAGE]) > 0

    # multiple packages
    interfaces = get_message_interfaces([
        INTERFACE_PACKAGE, MESSAGE_INTERFACE_ONLY_PACKAGE,
        SERVICE_INTERFACE_ONLY_PACKAGE, NON_INTERFACE_PACKAGE
    ])
    assert len(interfaces) > 0
    assert INTERFACE_PACKAGE in interfaces
    assert MESSAGE_INTERFACE_ONLY_PACKAGE in interfaces
    assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces
    assert NON_INTERFACE_PACKAGE not in interfaces
    assert len(interfaces[INTERFACE_PACKAGE]) > 0

    # unknown package name
    with pytest.raises(LookupError):
        get_message_interfaces(
            ['test_not_package_name_you_are_bad_to_use_this_name'])
Beispiel #2
0
def message_type_completer(**kwargs):
    """Callable returning a list of message types."""
    message_types = []
    for package_name, message_names in get_message_interfaces().items():
        for message_name in message_names:
            message_types.append(f'{package_name}/{message_name}')
    return message_types
Beispiel #3
0
def message_type_completer(**kwargs):
    """Callable returning a list of message types."""
    message_types = []
    message_types_dict = get_message_interfaces()
    for package_name in sorted(message_types_dict.keys()):
        for message_name in sorted(message_types_dict[package_name]):
            message_types.append(f'{package_name}/{message_name}')
    return message_types
Beispiel #4
0
 def main(self, *, args):
     if args.only_msgs:
         print_packages(sorted(get_message_interfaces()))
     elif args.only_srvs:
         print_packages(sorted(get_service_interfaces()))
     elif args.only_actions:
         print_packages(sorted(get_action_interfaces()))
     else:
         print_packages(sorted(get_interface_packages()))
Beispiel #5
0
def type_completer(**kwargs):
    """Callable returning a list of message, service, and action types."""
    types = []
    for package_name, service_names in get_service_interfaces().items():
        for service_name in service_names:
            types.append(f'{package_name}/{service_name}')

    for package_name, message_names in get_message_interfaces().items():
        for message_name in message_names:
            types.append(f'{package_name}/{message_name}')

    for package_name, action_names in get_action_interfaces().items():
        for action_name in action_names:
            types.append(f'{package_name}/{action_name}')
    return sorted(types)
def main(argv=sys.argv[1:]):
    """Parse the arguments and call the right logic."""
    parser = argparse.ArgumentParser(
        description='Generate interfaces public API documentation',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('--outputdir',
                        type=str,
                        default='api',
                        help='Output directory')
    parser.add_argument(
        '--packages-select',
        default=[],
        nargs='*',
        help='Generate the documentation for the following package names')
    args = parser.parse_args(argv)

    html_dir = os.path.join(args.outputdir, 'html')
    os.makedirs(html_dir, exist_ok=True)

    try:
        messages = get_message_interfaces(args.packages_select)
        services = get_service_interfaces(args.packages_select)
        actions = get_action_interfaces(args.packages_select)
    except LookupError as e:
        print(
            f'Package name {args.packages_select} is not defined. Reason: {e}',
            file=sys.stderr)
        exit(-1)

    timestamp = time.gmtime()

    generate_interfaces_index(messages, services, actions, html_dir, timestamp)

    # generate msg interfaces
    generate_interfaces(messages, html_dir, 'msg.html.em', 'msg', timestamp)
    generate_interfaces(services, html_dir, 'srv.html.em', 'srv', timestamp)
    generate_interfaces(actions, html_dir, 'action.html.em', 'action',
                        timestamp)

    utils.copy_css_style(html_dir)
def print_messages():
    print('Messages:')
    message_interfaces = get_message_interfaces()
    for package_name in sorted(message_interfaces):
        for message_name in sorted(message_interfaces[package_name]):
            print(f'    {package_name}/{message_name}')