示例#1
0
文件: autogen.py 项目: merose/yamcs
def create_service_file(symbol, service, filename):
    context = {
        "symbol": symbol,
        "service": service,
    }
    text = YamcsReSTRenderer().render("service.rst_t", context)
    with FileAvoidWrite(filename) as f:
        f.write(text)
示例#2
0
文件: autogen.py 项目: merose/yamcs
def create_websocket_file(symbol, method, filename):
    context = {
        "symbol": symbol,
        "method": method,
        "websocket_options": method.options.Extensions[annotations_pb2.websocket],
    }
    text = YamcsReSTRenderer().render("websocket.rst_t", context)
    with FileAvoidWrite(filename) as f:
        f.write(text)
示例#3
0
def create_route_file(symbol, method, filename):
    context = {
        "symbol": symbol,
        "method": method,
        "route_options": method.options.Extensions[annotations_pb2.route],
    }
    text = YamcsReSTRenderer().render('route.rst_t', context)
    with FileAvoidWrite(filename) as f:
        f.write(text)
示例#4
0
def write_file(name: str, text: str, opts: Any) -> None:
    """Write the output file for module/package <name>."""
    fname = path.join(opts.destdir, '%s.%s' % (name, opts.suffix))
    if opts.dryrun:
        print(__('Would create file %s.') % fname)
        return
    if not opts.force and path.isfile(fname):
        print(__('File %s already exists, skipping.') % fname)
    else:
        print(__('Creating file %s.') % fname)
        with FileAvoidWrite(fname) as f:
            f.write(text)
示例#5
0
def create_autosummary_file(modules, opts):
    # type: (List[unicode], Any, unicode) -> None
    """Create the module's index."""
    lines = [
        'API Reference',
        '=============',
        '',
        '.. autosummary::',
        '   :template: api_module.rst',
        '   :toctree: {}'.format(opts.destdir),
        '',
    ]

    modules.sort()
    for module in modules:
        lines.append('   {}'.format(module))
    lines.append('')

    fname = path.join(opts.srcdir, '{}.rst'.format(opts.docname))
    logger.info('[apigen] creating API docs file: {}'.format(fname))
    with FileAvoidWrite(fname) as f:
        f.write('\n'.join(lines))
示例#6
0
文件: autogen.py 项目: merose/yamcs
    service_links = []
    for file in proto.file:
        for service in file.service:
            servicedir = Path(destdir, camel_to_slug(service.name).replace("-api", ""))
            servicedir.mkdir(exist_ok=True)

            servicefile = os.path.join(servicedir, "index.rst")
            symbol = "." + file.package + "." + service.name
            create_service_file(symbol, service, servicefile)
            service_links.append(servicedir.name + "/index")

            for method in service.method:
                filename = camel_to_slug(method.name) + ".rst"
                methodfile = os.path.join(servicedir, filename)
                symbol = "." + file.package + "." + service.name + "." + method.name

                if method.options.HasExtension(annotations_pb2.route):
                    create_route_file(symbol, method, methodfile)
                elif method.options.HasExtension(annotations_pb2.websocket):
                    create_websocket_file(symbol, method, methodfile)

    service_links.sort()
    text = YamcsReSTRenderer().render(
        "index.rst_t",
        {
            "service_links": service_links,
        },
    )
    with FileAvoidWrite(os.path.join(destdir, "index.rst")) as f:
        f.write(text)