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)
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)
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)
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)
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))
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)