|
|
#!/usr/bin/env python
|
|
|
#
|
|
|
# runrst - register custom roles and run correct writer
|
|
|
#
|
|
|
# Copyright 2010 Matt Mackall <mpm@selenic.com> and others
|
|
|
#
|
|
|
# This software may be used and distributed according to the terms of the
|
|
|
# GNU General Public License version 2 or any later version.
|
|
|
|
|
|
"""usage: %s WRITER args...
|
|
|
|
|
|
where WRITER is the name of a Docutils writer such as 'html' or 'manpage'
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
try:
|
|
|
from docutils.parsers.rst import roles
|
|
|
from docutils.core import publish_cmdline
|
|
|
from docutils import nodes, utils
|
|
|
except ImportError:
|
|
|
sys.stderr.write("abort: couldn't generate documentation: docutils "
|
|
|
"module is missing\n")
|
|
|
sys.exit(-1)
|
|
|
|
|
|
def role_hg(name, rawtext, text, lineno, inliner,
|
|
|
options={}, content=[]):
|
|
|
text = "hg " + utils.unescape(text)
|
|
|
linktext = nodes.literal(rawtext, text)
|
|
|
parts = text.split()
|
|
|
cmd, args = parts[1], parts[2:]
|
|
|
if cmd == 'help' and args:
|
|
|
cmd = args[0] # link to 'dates' for 'hg help dates'
|
|
|
node = nodes.reference(rawtext, '', linktext,
|
|
|
refuri="hg.1.html#%s" % cmd)
|
|
|
return [node], []
|
|
|
|
|
|
roles.register_local_role("hg", role_hg)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
if len(sys.argv) < 2:
|
|
|
sys.stderr.write(__doc__ % sys.argv[0])
|
|
|
sys.exit(1)
|
|
|
|
|
|
writer = sys.argv[1]
|
|
|
del sys.argv[1]
|
|
|
|
|
|
publish_cmdline(writer_name=writer)
|
|
|
|