runrst
61 lines
| 1.9 KiB
| text/plain
|
TextLexer
/ doc / runrst
Martin Geisler
|
r10971 | #!/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 | ||||
Nicolas Dumazet
|
r11707 | 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") | ||||
Martin Geisler
|
r15314 | sys.stderr.write("please install python-docutils or see " | ||
"http://docutils.sourceforge.net/\n") | ||||
Nicolas Dumazet
|
r11707 | sys.exit(-1) | ||
Martin Geisler
|
r10972 | |||
def role_hg(name, rawtext, text, lineno, inliner, | ||||
options={}, content=[]): | ||||
Martin Geisler
|
r10974 | text = "hg " + utils.unescape(text) | ||
linktext = nodes.literal(rawtext, text) | ||||
parts = text.split() | ||||
cmd, args = parts[1], parts[2:] | ||||
FUJIWARA Katsunori
|
r28075 | refuri = "hg.1.html#%s" % cmd | ||
Martin Geisler
|
r10974 | if cmd == 'help' and args: | ||
FUJIWARA Katsunori
|
r28075 | if args[0] == 'config': | ||
# :hg:`help config` | ||||
refuri = "hgrc.5.html" | ||||
FUJIWARA Katsunori
|
r28076 | elif args[0].startswith('config.'): | ||
# :hg:`help config.SECTION...` | ||||
refuri = "hgrc.5.html#%s" % args[0].split('.', 2)[1] | ||||
FUJIWARA Katsunori
|
r28075 | elif len(args) >= 2 and args[0] == '-c': | ||
# :hg:`help -c COMMAND ...` is equivalent to :hg:`COMMAND` | ||||
# (mainly for :hg:`help -c config`) | ||||
refuri = "hg.1.html#%s" % args[1] | ||||
else: | ||||
refuri = "hg.1.html#%s" % args[0] | ||||
Martin Geisler
|
r10974 | node = nodes.reference(rawtext, '', linktext, | ||
FUJIWARA Katsunori
|
r28075 | refuri=refuri) | ||
Martin Geisler
|
r10972 | return [node], [] | ||
roles.register_local_role("hg", role_hg) | ||||
Martin Geisler
|
r10971 | |||
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) | ||||