doc/runrst
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 09 Feb 2021 09:37:39 -0800
changeset 46480 05dd091dfa6a
parent 45830 c102b704edb5
child 46819 d4ba4d51f85f
permissions -rwxr-xr-x
wireprotopeer: clarify some variable names now that we allow snake_case "encargsorres" is hard to parse ("encarg sorres" sounds like it might be Spanish to me, and indeed Google Translate tells me that it's Catalan for "order sands"). Let's clarify with some added underscores and longer names. Differential Revision: https://phab.mercurial-scm.org/D9973
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45830
c102b704edb5 global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents: 43691
diff changeset
     1
#!/usr/bin/env python3
10971
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)