summaryrefslogtreecommitdiff
path: root/doc/runrst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/runrst')
-rwxr-xr-xdoc/runrst49
1 files changed, 49 insertions, 0 deletions
diff --git a/doc/runrst b/doc/runrst
new file mode 100755
index 0000000..8c9d222
--- /dev/null
+++ b/doc/runrst
@@ -0,0 +1,49 @@
+#!/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.stderr.write("please install python-docutils or see "
+ "http://docutils.sourceforge.net/\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)