def cli_docs(app): info(bold('creating CLI documentation...')) documented_cmds, undocumented_cmds = get_cli_docs() documented_cmds.sort(key=lambda x: x[0]) undocumented_cmds.sort() documented = [' '*4 + c[0] for c in documented_cmds] undocumented = [' * ' + c for c in undocumented_cmds] raw = (CLI_INDEX % cli_index_strings()[:5]).format(documented='\n'.join(documented), undocumented='\n'.join(undocumented)) if not os.path.exists('cli'): os.makedirs('cli') update_cli_doc('cli-index', raw, app) for cmd, parser in documented_cmds: usage = [mark_options(i) for i in parser.usage.replace('%prog', cmd).splitlines()] cmdline = usage[0] usage = usage[1:] usage = [i.replace(cmd, ':command:`%s`'%cmd) for i in usage] usage = '\n'.join(usage) preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + app.config.language, cmdline=cmdline, usage=usage) if cmd == 'ebook-convert': generate_ebook_convert_help(preamble, app) elif cmd == 'calibredb': generate_calibredb_help(preamble, app) else: groups = [(None, None, parser.option_list)] for grp in parser.option_groups: groups.append((grp.title, grp.description, grp.option_list)) raw = preamble lines = render_options(cmd, groups) raw += '\n'+'\n'.join(lines) update_cli_doc(cmd, raw, app)
def cli_docs(app): info = app.builder.info info(bold('creating CLI documentation...')) documented_cmds = [] undocumented_cmds = [] for script in entry_points['console_scripts'] + entry_points['gui_scripts']: module = script[script.index('=') + 1:script.index(':')].strip() cmd = script[:script.index('=')].strip() if cmd in ('calibre-complete', 'calibre-parallel'): continue module = __import__(module, fromlist=[module.split('.')[-1]]) if hasattr(module, 'option_parser'): try: documented_cmds.append((cmd, getattr(module, 'option_parser')())) except TypeError: documented_cmds.append((cmd, getattr(module, 'option_parser')(cmd))) else: undocumented_cmds.append(cmd) documented_cmds.sort(cmp=lambda x, y: cmp(x[0], y[0])) undocumented_cmds.sort() documented = [' ' * 4 + c[0] for c in documented_cmds] undocumented = [' * ' + c for c in undocumented_cmds] raw = (CLI_INDEX % cli_index_strings()).format( documented='\n'.join(documented), undocumented='\n'.join(undocumented)) if not os.path.exists('cli'): os.makedirs('cli') update_cli_doc('cli-index', raw, app) for cmd, parser in documented_cmds: usage = [ mark_options(i) for i in parser.usage.replace('%prog', cmd).splitlines() ] cmdline = usage[0] usage = usage[1:] usage = [i.replace(cmd, ':command:`%s`' % cmd) for i in usage] usage = '\n'.join(usage) preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + app.config.language, cmdline=cmdline, usage=usage) if cmd == 'ebook-convert': generate_ebook_convert_help(preamble, app) elif cmd == 'calibredb': generate_calibredb_help(preamble, app) else: groups = [(None, None, parser.option_list)] for grp in parser.option_groups: groups.append((grp.title, grp.description, grp.option_list)) raw = preamble lines = render_options(cmd, groups) raw += '\n' + '\n'.join(lines) update_cli_doc(cmd, raw, app)
def cli_docs(app): info = app.builder.info info(bold('creating CLI documentation...')) documented_cmds = [] undocumented_cmds = [] for script in entry_points['console_scripts'] + entry_points['gui_scripts']: module = script[script.index('=')+1:script.index(':')].strip() cmd = script[:script.index('=')].strip() if cmd in ('calibre-complete', 'calibre-parallel'): continue module = __import__(module, fromlist=[module.split('.')[-1]]) if hasattr(module, 'option_parser'): try: documented_cmds.append((cmd, getattr(module, 'option_parser')())) except TypeError: documented_cmds.append((cmd, getattr(module, 'option_parser')(cmd))) else: undocumented_cmds.append(cmd) documented_cmds.sort(cmp=lambda x, y: cmp(x[0], y[0])) undocumented_cmds.sort() documented = [' '*4 + c[0] for c in documented_cmds] undocumented = [' * ' + c for c in undocumented_cmds] raw = (CLI_INDEX % cli_index_strings()[:5]).format(documented='\n'.join(documented), undocumented='\n'.join(undocumented)) if not os.path.exists('cli'): os.makedirs('cli') update_cli_doc('cli-index', raw, app) for cmd, parser in documented_cmds: usage = [mark_options(i) for i in parser.usage.replace('%prog', cmd).splitlines()] cmdline = usage[0] usage = usage[1:] usage = [i.replace(cmd, ':command:`%s`'%cmd) for i in usage] usage = '\n'.join(usage) preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + app.config.language, cmdline=cmdline, usage=usage) if cmd == 'ebook-convert': generate_ebook_convert_help(preamble, app) elif cmd == 'calibredb': generate_calibredb_help(preamble, app) else: groups = [(None, None, parser.option_list)] for grp in parser.option_groups: groups.append((grp.title, grp.description, grp.option_list)) raw = preamble lines = render_options(cmd, groups) raw += '\n'+'\n'.join(lines) update_cli_doc(cmd, raw, app)
def add_html_context(app, pagename, templatename, context, *args): context['localized_path'] = partial(localized_path, app) context['change_language_text'] = cli_index_strings()[5] context['search_box_text'] = cli_index_strings()[6]
def add_html_context(app, pagename, templatename, context, *args): context['localized_path'] = partial(localized_path, app) context['change_language_text'] = cli_index_strings()[5]