Mercurial > public > mercurial-scm > hg
annotate doc/gendoc.py @ 52636:0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
These aliases were introduced back in 5209fc94b982, because `black` was going to
strip away the extra parentheses, but they're needed to subvert `test-check-code.t`.
That obviously changed at some point, but `pyupgrade`[1] also strips these out.
While that tool is very useful in adapting code to modern standards, it lacks
the ability to turn off most conversions, so constantly reverting these is a
pain.
Even without that, the code is more understandable with an explicit declaration.
It also would have been an easy typo to miss the leading `_` in the i18n method
`_()` that the checker is looking for, and fail to detect the problem.
The `contrib/perf.py` code just uses a local alias to the original methods
because (IIUC), this tries to be compatible with old versions of hg. But
practically, these noi18n aliases were added before useful py3 support, and at
some point, it won't be feasible to do py2 benchmarking anymore, and maybe this
module can be cleaned up some.
[1] https://github.com/asottile/pyupgrade
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 06 Jan 2025 13:29:42 -0500 |
parents | 2a875530a023 |
children | 3e84e001b6c1 |
rev | line source |
---|---|
45830
c102b704edb5
global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44975
diff
changeset
|
1 #!/usr/bin/env python3 |
19425
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
2 """usage: %s DOC ... |
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
3 |
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
4 where DOC is the name of a document |
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
5 """ |
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
6 |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
7 |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
8 import os |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
9 import sys |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
10 import textwrap |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
11 import argparse |
27330
6fbf1159a85a
doc: make gendoc.py module import policy aware
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26413
diff
changeset
|
12 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
13 try: |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
14 import msvcrt |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
15 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
16 msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
17 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
18 except ImportError: |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
19 pass |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
20 |
27330
6fbf1159a85a
doc: make gendoc.py module import policy aware
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26413
diff
changeset
|
21 # This script is executed during installs and may not have C extensions |
6fbf1159a85a
doc: make gendoc.py module import policy aware
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26413
diff
changeset
|
22 # available. Relax C module requirements. |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43503
diff
changeset
|
23 os.environ['HGMODULEPOLICY'] = 'allow' |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
24 # import from the live mercurial repo |
49151
1b6e381521c5
doc: use an absolute path in sys.path to work around a python DLL loading bug
Matt Harbison <matt_harbison@yahoo.com>
parents:
46518
diff
changeset
|
25 sys.path.insert(0, os.path.abspath("..")) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
26 from mercurial import demandimport |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
27 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
28 demandimport.enable() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
29 |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
30 from mercurial import ( |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
31 commands, |
41030
c0865f3da285
py3: byteify sys.argv in gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
41004
diff
changeset
|
32 encoding, |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
33 extensions, |
46516
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45830
diff
changeset
|
34 fancyopts, |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
35 help, |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
36 minirst, |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
37 pycompat, |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
38 ui as uimod, |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
39 ) |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
40 from mercurial.i18n import ( |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
41 gettext, |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
42 _, |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
43 ) |
44975
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43673
diff
changeset
|
44 from mercurial.utils import stringutil |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
45 |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
46 table = commands.table |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
47 globalopts = commands.globalopts |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
48 helptable = help.helptable |
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
49 loaddoc = help.loaddoc |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
50 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
51 |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
52 def get_desc(docstr): |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
53 if not docstr: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
54 return b"", b"" |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
55 # sanitize |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
56 docstr = docstr.strip(b"\n") |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
57 docstr = docstr.rstrip() |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
58 shortdesc = docstr.splitlines()[0].strip() |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
59 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
60 i = docstr.find(b"\n") |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
61 if i != -1: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
62 desc = docstr[i + 2 :] |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
63 else: |
12780
bdc1cf692447
gendoc: dedent documentation from docstrings
Erik Zielke <ez@aragost.com>
parents:
12777
diff
changeset
|
64 desc = shortdesc |
bdc1cf692447
gendoc: dedent documentation from docstrings
Erik Zielke <ez@aragost.com>
parents:
12777
diff
changeset
|
65 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
66 desc = textwrap.dedent(desc.decode('latin1')).encode('latin1') |
12780
bdc1cf692447
gendoc: dedent documentation from docstrings
Erik Zielke <ez@aragost.com>
parents:
12777
diff
changeset
|
67 |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
68 return (shortdesc, desc) |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
69 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
70 |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
71 def get_opts(opts): |
11321
40c06bbf58be
help: show value requirement and multiple occurrence of options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10282
diff
changeset
|
72 for opt in opts: |
40c06bbf58be
help: show value requirement and multiple occurrence of options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10282
diff
changeset
|
73 if len(opt) == 5: |
40c06bbf58be
help: show value requirement and multiple occurrence of options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10282
diff
changeset
|
74 shortopt, longopt, default, desc, optlabel = opt |
40c06bbf58be
help: show value requirement and multiple occurrence of options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10282
diff
changeset
|
75 else: |
40c06bbf58be
help: show value requirement and multiple occurrence of options
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
10282
diff
changeset
|
76 shortopt, longopt, default, desc = opt |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
77 optlabel = _(b"VALUE") |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
78 allopts = [] |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
79 if shortopt: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
80 allopts.append(b"-%s" % shortopt) |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
81 if longopt: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
82 allopts.append(b"--%s" % longopt) |
20081
93f9d11603d8
doc: show details of command options in pages generated by docutils
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19425
diff
changeset
|
83 if isinstance(default, list): |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
84 allopts[-1] += b" <%s[+]>" % optlabel |
20081
93f9d11603d8
doc: show details of command options in pages generated by docutils
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19425
diff
changeset
|
85 elif (default is not None) and not isinstance(default, bool): |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
86 allopts[-1] += b" <%s>" % optlabel |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
87 if b'\n' in desc: |
20655
37f3be9d1541
doc: gendoc.py creates valid output for option descriptions with newlines
Simon Heimberg <simohe@besonet.ch>
parents:
20081
diff
changeset
|
88 # only remove line breaks and indentation |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
89 desc = b' '.join(l.lstrip() for l in desc.split(b'\n')) |
46516
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45830
diff
changeset
|
90 if isinstance(default, fancyopts.customopt): |
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45830
diff
changeset
|
91 default = default.getdefaultvalue() |
44975
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43673
diff
changeset
|
92 if default: |
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43673
diff
changeset
|
93 default = stringutil.forcebytestr(default) |
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43673
diff
changeset
|
94 desc += _(b" (default: %s)") % default |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
95 yield (b", ".join(allopts), desc) |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
96 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
97 |
12756 | 98 def get_cmd(cmd, cmdtable): |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
99 d = {} |
12756 | 100 attr = cmdtable[cmd] |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
101 cmds = cmd.lstrip(b"^").split(b"|") |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
102 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
103 d[b'cmd'] = cmds[0] |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
104 d[b'aliases'] = cmd.split(b"|")[1:] |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
105 d[b'desc'] = get_desc(gettext(pycompat.getdoc(attr[0]))) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
106 d[b'opts'] = list(get_opts(attr[1])) |
7376
fc06bd17c985
doc: handle shortened command synopses
Matt Mackall <mpm@selenic.com>
parents:
7014
diff
changeset
|
107 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
108 s = b'hg ' + cmds[0] |
7376
fc06bd17c985
doc: handle shortened command synopses
Matt Mackall <mpm@selenic.com>
parents:
7014
diff
changeset
|
109 if len(attr) > 2: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
110 if not attr[2].startswith(b'hg'): |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
111 s += b' ' + attr[2] |
7376
fc06bd17c985
doc: handle shortened command synopses
Matt Mackall <mpm@selenic.com>
parents:
7014
diff
changeset
|
112 else: |
fc06bd17c985
doc: handle shortened command synopses
Matt Mackall <mpm@selenic.com>
parents:
7014
diff
changeset
|
113 s = attr[2] |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
114 d[b'synopsis'] = s.strip() |
7376
fc06bd17c985
doc: handle shortened command synopses
Matt Mackall <mpm@selenic.com>
parents:
7014
diff
changeset
|
115 |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
116 return d |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
117 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
118 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
119 def showdoc(ui, debugcmds=False): |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
120 # print options |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
121 ui.write(minirst.section(_(b"Options"))) |
20081
93f9d11603d8
doc: show details of command options in pages generated by docutils
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19425
diff
changeset
|
122 multioccur = False |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
123 for optstr, desc in get_opts(globalopts): |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
124 ui.write(b"%s\n %s\n\n" % (optstr, desc)) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
125 if optstr.endswith(b"[+]>"): |
20081
93f9d11603d8
doc: show details of command options in pages generated by docutils
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19425
diff
changeset
|
126 multioccur = True |
93f9d11603d8
doc: show details of command options in pages generated by docutils
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
19425
diff
changeset
|
127 if multioccur: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
128 ui.write(_(b"\n[+] marked option can be specified multiple times\n")) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
129 ui.write(b"\n") |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
130 |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
131 # print cmds |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
132 ui.write(minirst.section(_(b"Commands"))) |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
133 commandprinter( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
134 ui, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
135 table, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
136 minirst.subsection, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
137 minirst.subsubsection, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
138 debugcmds=debugcmds, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
139 ) |
12756 | 140 |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
141 # print help topics |
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
142 # The config help topic is included in the hgrc.5 man page. |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
143 topics = findtopics(helptable, exclude=[b'config']) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
144 helpprinter(ui, topics, minirst.section) |
12756 | 145 |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
146 ui.write(minirst.section(_(b"Extensions"))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
147 ui.write( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
148 _( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
149 b"This section contains help for extensions that are " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
150 b"distributed together with Mercurial. Help for other " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
151 b"extensions is available in the help system." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
152 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
153 ) |
52636
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
154 ui.writenoi18n( |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
155 b"\n\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
156 b".. contents::\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
157 b" :class: htmlonly\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
158 b" :local:\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52017
diff
changeset
|
159 b" :depth: 1\n\n" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
160 ) |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
161 |
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
162 for extensionname in sorted(allextensionnames()): |
27660
512f883c234c
mercurial: pass ui to extensions.load (issue5007)
Jun Wu <quark@fb.com>
parents:
27496
diff
changeset
|
163 mod = extensions.load(ui, extensionname, None) |
18748
6e676fb6ea44
help: use a full header for topic titles
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
17267
diff
changeset
|
164 ui.write(minirst.subsection(extensionname)) |
51840
76387080f238
help: add :config-doc:`section.key` shorthand to insert documentation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49164
diff
changeset
|
165 ext_doc = help.ext_help(ui, mod) |
76387080f238
help: add :config-doc:`section.key` shorthand to insert documentation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49164
diff
changeset
|
166 ui.write(b"%s\n\n" % ext_doc) |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
167 cmdtable = getattr(mod, 'cmdtable', None) |
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
168 if cmdtable: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
169 ui.write(minirst.subsubsection(_(b'Commands'))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
170 commandprinter( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
171 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
172 cmdtable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
173 minirst.subsubsubsection, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
174 minirst.subsubsubsubsection, |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
175 debugcmds=debugcmds, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
176 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
177 |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
178 |
52017
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
179 def showcommandlist(ui, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
180 """Render a plain text list of all command names |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
181 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
182 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
183 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
184 debugcmds: whether to include debug commands |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
185 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
186 cmdnames = allcommandnames(table, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
187 for mainname in cmdnames.keys(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
188 # Make does not like semicolons in filenames (or what it |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
189 # considers as filenames). We use command names as targets so |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
190 # it applies here. For now let's skip commands with semicolons |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
191 # in them (at this time it only includes the `admin::verify` |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
192 # advanced command). |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
193 if b'::' in mainname: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
194 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
195 ui.write(mainname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
196 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
197 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
198 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
199 def showtopiclist(ui): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
200 """Render a plain text list of all help topic names |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
201 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
202 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
203 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
204 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
205 for topic in helptable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
206 topicname = topic[0][0] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
207 if help.filtertopic(ui, topicname): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
208 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
209 ui.write(topicname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
210 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
211 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
212 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
213 def showextensionlist(ui): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
214 """Render a plain text list of all extension names |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
215 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
216 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
217 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
218 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
219 for extensionname in allextensionnames(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
220 ui.write(extensionname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
221 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
222 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
223 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
224 def showhelpindex(ui, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
225 """Render restructured text for a complete mercurial help index |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
226 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
227 This index will show a list of commands, followed by a list of help topics, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
228 and finally a list of extensions. These lists are split in categories and |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
229 ordered 'nicely' as defined by alphabetical and categeory order. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
230 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
231 Each entry in this index is a reference to the specific help page of the |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
232 command, topic, or extension at hand. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
233 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
234 ui.write(minirst.section(_(b"Mercurial Distributed SCM"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
235 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
236 missingdoc = _(b"(no help text available)") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
237 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
238 cats, h, syns = help._getcategorizedhelpcmds(ui, table, None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
239 ui.write(minirst.subsection(_(b"Commands"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
240 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
241 for cat in help.CATEGORY_ORDER: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
242 catfns = sorted(cats.get(cat, [])) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
243 if not catfns: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
244 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
245 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
246 catname = gettext(help.CATEGORY_NAMES[cat]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
247 ui.write(minirst.subsubsection(catname)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
248 for c in catfns: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
249 url = b'hg-%s.html' % c |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
250 ui.write(b" :`%s <%s>`__: %s" % (c, url, h[c])) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
251 syns[c].remove(c) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
252 if syns[c]: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
253 ui.write(_(b" (aliases: *%s*)") % (b', '.join(syns[c]))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
254 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
255 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
256 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
257 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
258 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
259 ui.write(minirst.subsection(_(b"Additional Help Topics"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
260 topiccats, topicsyns = help._getcategorizedhelptopics(ui, helptable) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
261 for cat in help.TOPIC_CATEGORY_ORDER: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
262 topics = topiccats.get(cat, []) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
263 if not topics: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
264 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
265 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
266 catname = gettext(help.TOPIC_CATEGORY_NAMES[cat]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
267 ui.write(minirst.subsubsection(catname)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
268 for t, desc in topics: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
269 url = b'topic-%s.html' % t |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
270 ui.write(b" :`%s <%s>`__: %s" % (t, url, desc)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
271 topicsyns[t].remove(t) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
272 if topicsyns[t]: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
273 ui.write(_(b" (aliases: *%s*)") % (b', '.join(topicsyns[t]))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
274 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
275 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
276 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
277 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
278 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
279 # Add an alphabetical list of extensions, categorized by group. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
280 sectionkeywords = [ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
281 (b"(ADVANCED)", _(b"(ADVANCED)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
282 (b"(EXPERIMENTAL)", _(b"(EXPERIMENTAL)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
283 (b"(DEPRECATED)", _(b"(DEPRECATED)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
284 ] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
285 extensionsections = [ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
286 (b"Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
287 (b"Advanced Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
288 (b"Experimental Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
289 (b"Deprecated Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
290 ] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
291 for extensionname in allextensionnames(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
292 mod = extensions.load(ui, extensionname, None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
293 shortdoc, longdoc = _splitdoc(mod) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
294 for i, kwds in enumerate(sectionkeywords): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
295 if any([kwd in shortdoc for kwd in kwds]): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
296 extensionsections[i + 1][1].append( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
297 (extensionname, mod, shortdoc) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
298 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
299 break |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
300 else: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
301 extensionsections[0][1].append((extensionname, mod, shortdoc)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
302 for sectiontitle, extinfos in extensionsections: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
303 ui.write(minirst.subsection(_(sectiontitle))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
304 for extinfo in sorted(extinfos, key=lambda ei: ei[0]): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
305 extensionname, mod, shortdoc = extinfo |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
306 url = b'ext-%s.html' % extensionname |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
307 ui.write( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
308 minirst.subsubsection(b'`%s <%s>`__' % (extensionname, url)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
309 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
310 ui.write(shortdoc) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
311 ui.write(b'\n\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
312 cmdtable = getattr(mod, 'cmdtable', None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
313 if cmdtable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
314 cmdnames = allcommandnames(cmdtable, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
315 for f in sorted(cmdnames.keys()): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
316 d = get_cmd(cmdnames[f], cmdtable) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
317 ui.write(b':%s: ' % d[b'cmd']) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
318 ui.write(d[b'desc'][0] or (missingdoc + b"\n")) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
319 ui.write(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
320 ui.write(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
321 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
322 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
323 def showcommand(ui, mainname): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
324 # Always pass debugcmds=True so that we find whatever command we are told |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
325 # to display. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
326 cmdnames = allcommandnames(table, debugcmds=True) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
327 allnames = cmdnames[mainname] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
328 d = get_cmd(allnames, table) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
329 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
330 header = _rendertpl( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
331 'cmdheader.txt', |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
332 { |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
333 'cmdname': mainname, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
334 'cmdtitle': minirst.section(b'hg ' + mainname), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
335 'cmdshortdesc': minirst.subsection(d[b'desc'][0]), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
336 'cmdlongdesc': d[b'desc'][1], |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
337 'cmdsynopsis': d[b'synopsis'], |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
338 }, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
339 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
340 ui.write(header.encode()) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
341 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
342 _optionsprinter(ui, d, minirst.subsubsection) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
343 if d[b'aliases']: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
344 ui.write(minirst.subsubsection(_(b"Aliases"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
345 ui.write(b"::\n\n ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
346 ui.write(b", ".join(d[b'aliases'])) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
347 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
348 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
349 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
350 def _splitdoc(obj): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
351 objdoc = pycompat.getdoc(obj) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
352 firstnl = objdoc.find(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
353 if firstnl > 0: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
354 shortdoc = objdoc[:firstnl] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
355 longdoc = objdoc[firstnl + 1 :] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
356 else: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
357 shortdoc = objdoc |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
358 longdoc = '' |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
359 return shortdoc.lstrip(), longdoc.lstrip() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
360 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
361 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
362 def _rendertpl(tplname, data): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
363 tplpath = os.path.join(os.path.dirname(__file__), 'templates', tplname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
364 with open(tplpath, 'r') as f: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
365 tpl = f.read() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
366 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
367 if isinstance(tpl, bytes): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
368 tpl = tpl.decode() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
369 for k in data: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
370 data[k] = data[k].decode() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
371 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
372 return tpl % data |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
373 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
374 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
375 def gettopicstable(): |
19424
762e51ce3411
gendoc: add showtopic
Takumi IINO <trot.thunder@gmail.com>
parents:
19423
diff
changeset
|
376 extrahelptable = [ |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
377 ([b"common"], b'', loaddoc(b'common'), help.TOPIC_CATEGORY_MISC), |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
378 ([b"hg.1"], b'', loaddoc(b'hg.1'), help.TOPIC_CATEGORY_CONFIG), |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
379 ([b"hg-ssh.8"], b'', loaddoc(b'hg-ssh.8'), help.TOPIC_CATEGORY_CONFIG), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
380 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
381 [b"hgignore.5"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
382 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
383 loaddoc(b'hgignore.5'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
384 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
385 ), |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
386 ([b"hgrc.5"], b'', loaddoc(b'hgrc.5'), help.TOPIC_CATEGORY_CONFIG), |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
387 ([b"hg-ssh.8.gendoc"], b'', b'', help.TOPIC_CATEGORY_CONFIG), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
388 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
389 [b"hgignore.5.gendoc"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
390 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
391 loaddoc(b'hgignore'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
392 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
393 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
394 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
395 [b"hgrc.5.gendoc"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
396 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
397 loaddoc(b'config'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
398 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
399 ), |
19424
762e51ce3411
gendoc: add showtopic
Takumi IINO <trot.thunder@gmail.com>
parents:
19423
diff
changeset
|
400 ] |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
401 return helptable + extrahelptable |
19424
762e51ce3411
gendoc: add showtopic
Takumi IINO <trot.thunder@gmail.com>
parents:
19423
diff
changeset
|
402 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
403 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
404 def findtopics(helptable, include=[], exclude=[]): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
405 """Find topics whose names match the given include/exclude rules |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
406 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
407 Note that exclude rules take precedence over include rules. |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
408 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
409 found = [] |
40291
170926caf44c
help: adding support for command categories
rdamazio@google.com
parents:
32336
diff
changeset
|
410 for h in helptable: |
170926caf44c
help: adding support for command categories
rdamazio@google.com
parents:
32336
diff
changeset
|
411 names, sec, doc = h[0:3] |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
412 if exclude and names[0] in exclude: |
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
413 continue |
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
414 if include and names[0] not in include: |
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
415 continue |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
416 found.append((names, sec, doc)) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
417 return found |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
418 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
419 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
420 def showtopic(ui, topic, wraptpl=False): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
421 """Render a help topic |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
422 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
423 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
424 ui: the UI object to output to |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
425 topic: the topic name to output |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
426 wraptpl: whether to wrap the output in the individual help topic |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
427 pages' header/footer |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
428 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
429 found = findtopics(gettopicstable(), include=[topic]) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
430 if not found: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
431 ui.write_err(_(b"ERROR: no such topic: %s\n") % topic) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
432 sys.exit(1) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
433 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
434 if wraptpl: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
435 header = _rendertpl( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
436 'topicheader.txt', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
437 {'topicname': topic, 'topictitle': minirst.section(found[0][1])}, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
438 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
439 ui.write(header.encode()) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
440 helpprinter(ui, found, None) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
441 return True |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
442 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
443 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
444 def helpprinter(ui, topics, sectionfunc): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
445 """Print a help topic |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
446 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
447 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
448 ui: the UI object to output to |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
449 topics: a list of help topics to output |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
450 sectionfunc: a callback to write the section title |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
451 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
452 for h in topics: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
453 names, sec, doc = h[0:3] |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
454 for name in names: |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
455 ui.write(b".. _%s:\n" % name) |
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
456 ui.write(b"\n") |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
457 if sectionfunc: |
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
458 ui.write(sectionfunc(sec)) |
21793
e0b29a0c36c4
gendoc: restore use of callable() since it was readded in Python 3.2
Augie Fackler <raf@durin42.com>
parents:
20689
diff
changeset
|
459 if callable(doc): |
26413
e0c572d4d112
help: pass around ui to doc loader (API)
Yuya Nishihara <yuya@tcha.org>
parents:
26412
diff
changeset
|
460 doc = doc(ui) |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
461 ui.write(doc) |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
462 ui.write(b"\n") |
19233
81d9a7f6f2e7
gendoc: extract print help topics into a dedicated function
Takumi IINO <trot.thunder@gmail.com>
parents:
19231
diff
changeset
|
463 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
464 |
52017
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
465 def showextension(ui, extensionname, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
466 """Render the help text for an extension |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
467 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
468 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
469 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
470 extensionname: the name of the extension to output |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
471 debugcmds: whether to include the extension's debug commands, if any |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
472 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
473 mod = extensions.load(ui, extensionname, None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
474 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
475 header = _rendertpl( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
476 'extheader.txt', |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
477 {'extname': extensionname, 'exttitle': minirst.section(extensionname)}, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
478 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
479 ui.write(header.encode()) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
480 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
481 shortdoc, longdoc = _splitdoc(mod) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
482 if shortdoc: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
483 ui.write(b"%s\n\n" % gettext(shortdoc)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
484 if longdoc: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
485 ui.write(minirst.subsection(_(b"Description"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
486 ui.write(b"%s\n\n" % gettext(longdoc)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
487 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
488 cmdtable = getattr(mod, 'cmdtable', None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
489 if cmdtable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
490 ui.write(minirst.subsection(_(b'Commands'))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
491 commandprinter( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
492 ui, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
493 cmdtable, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
494 minirst.subsubsection, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
495 minirst.subsubsubsection, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
496 debugcmds=debugcmds, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
497 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
498 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
499 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
500 def commandprinter(ui, cmdtable, sectionfunc, subsectionfunc, debugcmds=False): |
42252
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
501 """Render restructuredtext describing a list of commands and their |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
502 documentations, grouped by command category. |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
503 |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
504 Args: |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
505 ui: UI object to write the output to |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
506 cmdtable: a dict that maps a string of the command name plus its aliases |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
507 (separated with pipes) to a 3-tuple of (the command's function, a list |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
508 of its option descriptions, and a string summarizing available |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
509 options). Example, with aliases added for demonstration purposes: |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
510 |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
511 'phase|alias1|alias2': ( |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
512 <function phase at 0x7f0816b05e60>, |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
513 [ ('p', 'public', False, 'set changeset phase to public'), |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
514 ..., |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
515 ('r', 'rev', [], 'target revision', 'REV')], |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
516 '[-p|-d|-s] [-f] [-r] [REV...]' |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
517 ) |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
518 sectionfunc: minirst function to format command category headers |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
519 subsectionfunc: minirst function to format command headers |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
520 """ |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
521 h = allcommandnames(cmdtable, debugcmds=debugcmds) |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
522 cmds = h.keys() |
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
523 |
42249
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
524 def helpcategory(cmd): |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
525 """Given a canonical command name from `cmds` (above), retrieve its |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
526 help category. If helpcategory is None, default to CATEGORY_NONE. |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
527 """ |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
528 fullname = h[cmd] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
529 details = cmdtable[fullname] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
530 helpcategory = details[0].helpcategory |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
531 return helpcategory or help.registrar.command.CATEGORY_NONE |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
532 |
42250
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
533 cmdsbycategory = {category: [] for category in help.CATEGORY_ORDER} |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
534 for cmd in cmds: |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
535 # If a command category wasn't registered, the command won't get |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
536 # rendered below, so we raise an AssertionError. |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
537 if helpcategory(cmd) not in cmdsbycategory: |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
538 raise AssertionError( |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
539 "The following command did not register its (category) in " |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
540 "help.CATEGORY_ORDER: %s (%s)" % (cmd, helpcategory(cmd)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
541 ) |
42250
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
542 cmdsbycategory[helpcategory(cmd)].append(cmd) |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42249
diff
changeset
|
543 |
42249
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
544 # Print the help for each command. We present the commands grouped by |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
545 # category, and we use help.CATEGORY_ORDER as a guide for a helpful order |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
546 # in which to present the categories. |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
547 for category in help.CATEGORY_ORDER: |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
548 categorycmds = cmdsbycategory[category] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
549 if not categorycmds: |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
550 # Skip empty categories |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
551 continue |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
552 # Print a section header for the category. |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
553 # For now, the category header is at the same level as the headers for |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
554 # the commands in the category; this is fixed in the next commit. |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
555 ui.write(sectionfunc(help.CATEGORY_NAMES[category])) |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
556 # Print each command in the category |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42248
diff
changeset
|
557 for f in sorted(categorycmds): |
42248
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
558 d = get_cmd(h[f], cmdtable) |
42252
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42250
diff
changeset
|
559 ui.write(subsectionfunc(d[b'cmd'])) |
42248
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
560 # short description |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
561 ui.write(d[b'desc'][0]) |
12813
13fdef670c43
gendoc: support multi-line synopses
Martin Geisler <mg@lazybytes.net>
parents:
12812
diff
changeset
|
562 # synopsis |
42248
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
563 ui.write(b"::\n\n") |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
564 synopsislines = d[b'synopsis'].splitlines() |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
565 for line in synopsislines: |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
566 # some commands (such as rebase) have a multi-line |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
567 # synopsis |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
568 ui.write(b" %s\n" % line) |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
569 ui.write(b'\n') |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
570 # description |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
571 ui.write(b"%s\n\n" % d[b'desc'][1]) |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
572 |
42248
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
573 # options |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
574 def _optsection(s): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
575 return b"%s:\n\n" % s |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
576 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
577 _optionsprinter(ui, d, _optsection) |
42248
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
578 # aliases |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41037
diff
changeset
|
579 if d[b'aliases']: |
46518
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
580 # Note the empty comment, this is required to separate this |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
581 # (which should be a blockquote) from any preceding things (such |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
582 # as a definition list). |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
583 ui.write( |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
584 _(b"..\n\n aliases: %s\n\n") % b" ".join(d[b'aliases']) |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46517
diff
changeset
|
585 ) |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
586 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
587 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
588 def _optionsprinter(ui, cmd, sectionfunc): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
589 """Outputs the list of options for a given command object""" |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
590 opt_output = list(cmd[b'opts']) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
591 if opt_output: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
592 opts_len = max([len(line[0]) for line in opt_output]) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
593 ui.write(sectionfunc(_(b"Options"))) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
594 multioccur = False |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
595 for optstr, desc in opt_output: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
596 if desc: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
597 s = b"%-*s %s" % (opts_len, optstr, desc) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
598 else: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
599 s = optstr |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
600 ui.write(b"%s\n" % s) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
601 if optstr.endswith(b"[+]>"): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
602 multioccur = True |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
603 if multioccur: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
604 ui.write( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
605 _(b"\n[+] marked option can be specified multiple times\n") |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
606 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
607 ui.write(b"\n") |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
608 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
609 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
610 def allcommandnames(cmdtable, debugcmds=False): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
611 """Get a collection of all command names in the given command table |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
612 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
613 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
614 cmdtable: the command table to get the names from |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
615 debugcmds: whether to include debug commands |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
616 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
617 Returns a dictionary where the keys are the main command names, and the |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
618 values are the "raw" names (in the form of `name|alias1|alias2`). |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
619 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
620 allcmdnames = {} |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
621 for rawnames, attr in cmdtable.items(): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
622 mainname = rawnames.split(b"|")[0].lstrip(b"^") |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
623 if not debugcmds and mainname.startswith(b"debug"): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
624 continue |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
625 allcmdnames[mainname] = rawnames |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
626 return allcmdnames |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
627 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
628 |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
629 def allextensionnames(): |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
630 """Get a set of all known extension names""" |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
631 return set(extensions.enabled().keys()) | set(extensions.disabled().keys()) |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
632 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42252
diff
changeset
|
633 |
1814
7956893e8458
generate hg manpage from commands.py docstring
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
634 if __name__ == "__main__": |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
635 parser = argparse.ArgumentParser( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
636 prog='gendoc', description="Generate mercurial documentation files" |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
637 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
638 parser.add_argument('doc', default='hg.1.gendoc', nargs='?') |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
639 parser.add_argument( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
640 '-d', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
641 '--debug-cmds', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
642 action='store_true', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
643 help="Show debug commands in help pages", |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
644 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
645 args = parser.parse_args() |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
646 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
647 doc = encoding.strtolocal(args.doc) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
648 debugcmds = args.debug_cmds |
19425
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
649 |
30559
d83ca854fa21
ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents:
29397
diff
changeset
|
650 ui = uimod.ui.load() |
46517
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46516
diff
changeset
|
651 # Trigger extensions to load. This is disabled by default because it uses |
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46516
diff
changeset
|
652 # the current user's configuration, which is often not what is wanted. |
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46516
diff
changeset
|
653 if encoding.environ.get(b'GENDOC_LOAD_CONFIGURED_EXTENSIONS', b'0') != b'0': |
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46516
diff
changeset
|
654 extensions.loadall(ui) |
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46516
diff
changeset
|
655 |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
656 # ui.debugflag determines if the help module returns debug commands to us. |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
657 ui.debugflag = debugcmds |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
658 |
52017
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
659 # Render the 'all-in-one' giant documentation file |
41004
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
660 if doc == b'hg.1.gendoc': |
26412
7e8e3c0920a6
gendoc: use real ui in place of stdout
Yuya Nishihara <yuya@tcha.org>
parents:
21793
diff
changeset
|
661 showdoc(ui) |
52017
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
662 # Render a command/help-topic/extension name list (for internal use) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
663 elif doc == b'commandlist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
664 showcommandlist(ui, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
665 elif doc == b'topiclist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
666 showtopiclist(ui) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
667 elif doc == b'extensionlist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
668 showextensionlist(ui) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
669 # Render the help index/main page |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
670 elif doc == b'index': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
671 showhelpindex(ui, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
672 # Render an individual command/help-topic/extension page |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
673 elif doc.startswith(b'cmd-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
674 showcommand(ui, doc[4:]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
675 elif doc.startswith(b'topic-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
676 showtopic(ui, doc[6:], wraptpl=True) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
677 elif doc.startswith(b'ext-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
678 showextension(ui, doc[4:], debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
679 # Render a help-topic page without any title/footer, for later inclusion |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52016
diff
changeset
|
680 # into a hand-written help text file |
19425
81fbd4e66ff5
gendoc: dispatch print document content by commandline arguments
Takumi IINO <trot.thunder@gmail.com>
parents:
19424
diff
changeset
|
681 else: |
52016
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51840
diff
changeset
|
682 showtopic(ui, doc) |