author | Martin von Zweigbergk <martinvonz@google.com> |
Tue, 15 Sep 2020 11:17:24 -0700 | |
changeset 45498 | cc5f811b1f15 |
parent 43691 | 47ef023d0165 |
child 45830 | c102b704edb5 |
permissions | -rwxr-xr-x |
10971
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
2 |
# |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
3 |
# runrst - register custom roles and run correct writer |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
4 |
# |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
5 |
# Copyright 2010 Matt Mackall <mpm@selenic.com> and others |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
6 |
# |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
7 |
# This software may be used and distributed according to the terms of the |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
8 |
# GNU General Public License version 2 or any later version. |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
9 |
|
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
10 |
"""usage: %s WRITER args... |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
11 |
|
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
12 |
where WRITER is the name of a Docutils writer such as 'html' or 'manpage' |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
13 |
""" |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
14 |
|
39472
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
15 |
from __future__ import absolute_import |
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
16 |
|
10971
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
17 |
import sys |
43691
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
18 |
|
11707
13d79a7bf5b7
runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10974
diff
changeset
|
19 |
try: |
39472
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
20 |
import docutils.core as core |
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
21 |
import docutils.nodes as nodes |
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
22 |
import docutils.utils as utils |
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
23 |
import docutils.parsers.rst.roles as roles |
11707
13d79a7bf5b7
runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10974
diff
changeset
|
24 |
except ImportError: |
43691
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
25 |
sys.stderr.write( |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
26 |
"abort: couldn't generate documentation: docutils " |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
27 |
"module is missing\n" |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
28 |
) |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
29 |
sys.stderr.write( |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
30 |
"please install python-docutils or see " |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
31 |
"http://docutils.sourceforge.net/\n" |
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
32 |
) |
11707
13d79a7bf5b7
runrst: try to be more helpful if docutils is not installed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
10974
diff
changeset
|
33 |
sys.exit(-1) |
10972
0a2c6948f5f4
doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents:
10971
diff
changeset
|
34 |
|
43691
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
35 |
|
43690
15cccbacd5ce
doc: don't use mutable default arguments
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39472
diff
changeset
|
36 |
def role_hg(name, rawtext, text, lineno, inliner, options=None, content=None): |
10974
854ac04d712c
doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents:
10972
diff
changeset
|
37 |
text = "hg " + utils.unescape(text) |
854ac04d712c
doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents:
10972
diff
changeset
|
38 |
linktext = nodes.literal(rawtext, text) |
854ac04d712c
doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents:
10972
diff
changeset
|
39 |
parts = text.split() |
854ac04d712c
doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents:
10972
diff
changeset
|
40 |
cmd, args = parts[1], parts[2:] |
28075
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
41 |
refuri = "hg.1.html#%s" % cmd |
10974
854ac04d712c
doc: make links for hg role
Martin Geisler <mg@aragost.com>
parents:
10972
diff
changeset
|
42 |
if cmd == 'help' and args: |
28075
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
43 |
if args[0] == 'config': |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
44 |
# :hg:`help config` |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
45 |
refuri = "hgrc.5.html" |
28076
18c6b271579b
doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28075
diff
changeset
|
46 |
elif args[0].startswith('config.'): |
18c6b271579b
doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28075
diff
changeset
|
47 |
# :hg:`help config.SECTION...` |
18c6b271579b
doc: translate from :hg:`help config.SECTION` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28075
diff
changeset
|
48 |
refuri = "hgrc.5.html#%s" % args[0].split('.', 2)[1] |
28075
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
49 |
elif len(args) >= 2 and args[0] == '-c': |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
50 |
# :hg:`help -c COMMAND ...` is equivalent to :hg:`COMMAND` |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
51 |
# (mainly for :hg:`help -c config`) |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
52 |
refuri = "hg.1.html#%s" % args[1] |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
53 |
else: |
63eae465095e
doc: translate from :hg:`help config` to a valid link to hgrc.5.html
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
15314
diff
changeset
|
54 |
refuri = "hg.1.html#%s" % args[0] |
43691
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
55 |
node = nodes.reference(rawtext, '', linktext, refuri=refuri) |
10972
0a2c6948f5f4
doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents:
10971
diff
changeset
|
56 |
return [node], [] |
0a2c6948f5f4
doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents:
10971
diff
changeset
|
57 |
|
43691
47ef023d0165
black: blacken scripts
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43690
diff
changeset
|
58 |
|
10972
0a2c6948f5f4
doc, minirst: support hg interpreted text role
Martin Geisler <mg@aragost.com>
parents:
10971
diff
changeset
|
59 |
roles.register_local_role("hg", role_hg) |
10971
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
60 |
|
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
61 |
if __name__ == "__main__": |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
62 |
if len(sys.argv) < 2: |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
63 |
sys.stderr.write(__doc__ % sys.argv[0]) |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
64 |
sys.exit(1) |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
65 |
|
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
66 |
writer = sys.argv[1] |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
67 |
del sys.argv[1] |
cbe400a8e217
doc: add generic frontend to rst2man and rst2html
Martin Geisler <mg@aragost.com>
parents:
diff
changeset
|
68 |
|
39472
4e4fae1dda5c
doc: use modern import style in runrst
Yuya Nishihara <yuya@tcha.org>
parents:
28076
diff
changeset
|
69 |
core.publish_cmdline(writer_name=writer) |