Code to easily generate man pages via sphinx-build

This commit is contained in:
Kovid Goyal 2017-07-04 08:47:39 +05:30
parent dc4f4a581f
commit e752ebe2e3
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -253,12 +253,9 @@ def mark_options(raw):
return raw
def cli_docs(app):
info = app.builder.info
info(bold('creating CLI documentation...'))
def get_cli_docs():
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()
@ -272,6 +269,13 @@ def cli_docs(app):
documented_cmds.append((cmd, getattr(module, 'option_parser')(cmd)))
else:
undocumented_cmds.append(cmd)
return documented_cmds, undocumented_cmds
def cli_docs(app):
info = app.builder.info
info(bold('creating CLI documentation...'))
documented_cmds, undocumented_cmds = get_cli_docs()
documented_cmds.sort(cmp=lambda x, y: cmp(x[0], y[0]))
undocumented_cmds.sort()
@ -338,8 +342,20 @@ def guilabel_role(typ, rawtext, text, *args, **kwargs):
return menusel_role(typ, rawtext, text, *args, **kwargs)
def setup_man_pages(app):
documented_cmds = get_cli_docs()[0]
man_pages = []
for cmd, option_parser in documented_cmds:
path = 'generated/%s/%s' % (app.config.language, cmd)
man_pages.append((
path, cmd, cmd, 'Kovid Goyal', 1
))
app.config['man_pages'] = man_pages
def setup(app):
from docutils.parsers.rst import roles
setup_man_pages(app)
app.add_builder(EPUBHelpBuilder)
app.add_builder(LaTeXHelpBuilder)
app.connect('source-read', source_read_handler)