Mercurial > public > mercurial-scm > hg-stable
annotate doc/gendoc.py @ 53040:cdd7bf612c7b stable tip
bundle-spec: properly format boolean parameter (issue6960)
This was breaking automatic clone bundle generation. This changeset fixes it and
add a test to catch it in the future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 11 Mar 2025 02:29:42 +0100 |
parents | 3e84e001b6c1 |
children |
rev | line source |
---|---|
45849
c102b704edb5
global: use python3 in shebangs
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44819
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 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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 |
41014
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:
42281
diff
changeset
|
15 |
41014
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. |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43551
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 |
48848
1b6e381521c5
doc: use an absolute path in sys.path to work around a python DLL loading bug
Matt Harbison <matt_harbison@yahoo.com>
parents:
46570
diff
changeset
|
25 sys.path.insert(0, os.path.abspath("..")) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
26 from mercurial import demandimport |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
27 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
28 demandimport.enable() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
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, |
41033
c0865f3da285
py3: byteify sys.argv in gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
41014
diff
changeset
|
32 encoding, |
28966
ea1fab5293ca
py3: make gendoc use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27660
diff
changeset
|
33 extensions, |
46568
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45849
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, |
41014
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 ) |
44819
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43714
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:
42281
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: |
41014
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 |
41014
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 |
41014
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:
42281
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 |
41014
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:
42281
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 |
41014
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: |
41014
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: |
41014
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): |
41014
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): |
41014
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 |
41014
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')) |
46568
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45849
diff
changeset
|
90 if isinstance(default, fancyopts.customopt): |
921e1253c8ba
gendoc: support defaults on customopts a bit better
Kyle Lippincott <spectral@google.com>
parents:
45849
diff
changeset
|
91 default = default.getdefaultvalue() |
44819
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43714
diff
changeset
|
92 if default: |
1a4b9b602e54
py3: fix broken man page generation, it was generating `(default: NUL*)`
Kyle Lippincott <spectral@google.com>
parents:
43714
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:
43714
diff
changeset
|
94 desc += _(b" (default: %s)") % default |
41014
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:
42281
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] |
41014
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 |
41014
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 |
41014
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: |
41014
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] |
41014
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:
42281
diff
changeset
|
118 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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 |
41014
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): |
41014
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: |
41014
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 |
41014
e10641c48fa7
py3: byteify gendoc.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
40294
diff
changeset
|
132 ui.write(minirst.section(_(b"Commands"))) |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
133 commandprinter( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
134 ui, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
135 table, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
136 minirst.subsection, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
137 minirst.subsubsection, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
138 debugcmds=debugcmds, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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. |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
143 topics = findtopics(helptable, exclude=[b'config']) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
144 helpprinter(ui, topics, minirst.section) |
12756 | 145 |
41014
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:
42281
diff
changeset
|
147 ui.write( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
148 _( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
149 b"This section contains help for extensions that are " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
150 b"distributed together with Mercurial. Help for other " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
151 b"extensions is available in the help system." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
152 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
153 ) |
52661
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52048
diff
changeset
|
154 ui.writenoi18n( |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52048
diff
changeset
|
155 b"\n\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52048
diff
changeset
|
156 b".. contents::\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52048
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:
52048
diff
changeset
|
158 b" :local:\n" |
0e11e532c958
style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52048
diff
changeset
|
159 b" :depth: 1\n\n" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
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)) |
51882
76387080f238
help: add :config-doc:`section.key` shorthand to insert documentation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49201
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:
49201
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: |
41014
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:
42281
diff
changeset
|
170 commandprinter( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
171 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
172 cmdtable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
173 minirst.subsubsubsection, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
174 minirst.subsubsubsubsection, |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
175 debugcmds=debugcmds, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
176 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
177 |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
178 |
52048
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
179 def showcommandlist(ui, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
181 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
182 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
183 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
184 debugcmds: whether to include debug commands |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
185 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
186 cmdnames = allcommandnames(table, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
187 for mainname in cmdnames.keys(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
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:
52047
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:
52047
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:
52047
diff
changeset
|
192 # advanced command). |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
193 if b'::' in mainname: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
194 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
195 ui.write(mainname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
196 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
197 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
198 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
199 def showtopiclist(ui): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
201 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
202 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
203 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
204 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
205 for topic in helptable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
206 topicname = topic[0][0] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
207 if help.filtertopic(ui, topicname): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
208 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
209 ui.write(topicname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
210 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
211 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
212 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
213 def showextensionlist(ui): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
215 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
216 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
217 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
218 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
219 for extensionname in allextensionnames(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
220 ui.write(extensionname) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
221 ui.write(b" ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
222 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
223 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
224 def showhelpindex(ui, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
226 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
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:
52047
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:
52047
diff
changeset
|
230 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
232 command, topic, or extension at hand. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
233 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
235 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
236 missingdoc = _(b"(no help text available)") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
237 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
239 ui.write(minirst.subsection(_(b"Commands"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
240 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
241 for cat in help.CATEGORY_ORDER: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
242 catfns = sorted(cats.get(cat, [])) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
243 if not catfns: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
244 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
245 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
246 catname = gettext(help.CATEGORY_NAMES[cat]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
247 ui.write(minirst.subsubsection(catname)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
248 for c in catfns: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
249 url = b'hg-%s.html' % c |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
251 syns[c].remove(c) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
252 if syns[c]: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
254 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
255 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
256 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
257 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
258 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
260 topiccats, topicsyns = help._getcategorizedhelptopics(ui, helptable) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
261 for cat in help.TOPIC_CATEGORY_ORDER: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
262 topics = topiccats.get(cat, []) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
263 if not topics: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
264 continue |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
265 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
266 catname = gettext(help.TOPIC_CATEGORY_NAMES[cat]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
267 ui.write(minirst.subsubsection(catname)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
268 for t, desc in topics: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
269 url = b'topic-%s.html' % t |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
271 topicsyns[t].remove(t) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
272 if topicsyns[t]: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
274 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
275 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
276 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
277 ui.write(b"\n\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
278 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
280 sectionkeywords = [ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
281 (b"(ADVANCED)", _(b"(ADVANCED)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
282 (b"(EXPERIMENTAL)", _(b"(EXPERIMENTAL)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
283 (b"(DEPRECATED)", _(b"(DEPRECATED)")), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
284 ] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
285 extensionsections = [ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
286 (b"Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
287 (b"Advanced Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
288 (b"Experimental Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
289 (b"Deprecated Extensions", []), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
290 ] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
291 for extensionname in allextensionnames(): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
292 mod = extensions.load(ui, extensionname, None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
293 shortdoc, longdoc = _splitdoc(mod) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
294 for i, kwds in enumerate(sectionkeywords): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
296 extensionsections[i + 1][1].append( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
297 (extensionname, mod, shortdoc) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
298 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
299 break |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
300 else: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
301 extensionsections[0][1].append((extensionname, mod, shortdoc)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
302 for sectiontitle, extinfos in extensionsections: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
303 ui.write(minirst.subsection(_(sectiontitle))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
305 extensionname, mod, shortdoc = extinfo |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
306 url = b'ext-%s.html' % extensionname |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
307 ui.write( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
308 minirst.subsubsection(b'`%s <%s>`__' % (extensionname, url)) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
309 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
310 ui.write(shortdoc) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
311 ui.write(b'\n\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
312 cmdtable = getattr(mod, 'cmdtable', None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
313 if cmdtable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
314 cmdnames = allcommandnames(cmdtable, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
315 for f in sorted(cmdnames.keys()): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
316 d = get_cmd(cmdnames[f], cmdtable) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
317 ui.write(b':%s: ' % d[b'cmd']) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
319 ui.write(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
320 ui.write(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
321 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
322 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
323 def showcommand(ui, mainname): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
325 # to display. |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
326 cmdnames = allcommandnames(table, debugcmds=True) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
327 allnames = cmdnames[mainname] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
328 d = get_cmd(allnames, table) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
329 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
330 header = _rendertpl( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
331 'cmdheader.txt', |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
332 { |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
333 'cmdname': mainname, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
334 'cmdtitle': minirst.section(b'hg ' + mainname), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
335 'cmdshortdesc': minirst.subsection(d[b'desc'][0]), |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
336 'cmdlongdesc': d[b'desc'][1], |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
337 'cmdsynopsis': d[b'synopsis'], |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
338 }, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
339 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
340 ui.write(header.encode()) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
341 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
342 _optionsprinter(ui, d, minirst.subsubsection) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
343 if d[b'aliases']: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
344 ui.write(minirst.subsubsection(_(b"Aliases"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
345 ui.write(b"::\n\n ") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
346 ui.write(b", ".join(d[b'aliases'])) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
347 ui.write(b"\n") |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
348 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
349 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
350 def _splitdoc(obj): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
351 objdoc = pycompat.getdoc(obj) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
352 firstnl = objdoc.find(b'\n') |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
353 if firstnl > 0: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
354 shortdoc = objdoc[:firstnl] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
355 longdoc = objdoc[firstnl + 1 :] |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
356 else: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
357 shortdoc = objdoc |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
358 longdoc = '' |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
359 return shortdoc.lstrip(), longdoc.lstrip() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
360 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
361 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
362 def _rendertpl(tplname, data): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
363 tplpath = os.path.join(os.path.dirname(__file__), 'templates', tplname) |
52681
3e84e001b6c1
pyupgrade: drop redundant `open()` modes
Matt Harbison <matt_harbison@yahoo.com>
parents:
52661
diff
changeset
|
364 with open(tplpath) as f: |
52048
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
365 tpl = f.read() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
366 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
367 if isinstance(tpl, bytes): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
368 tpl = tpl.decode() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
369 for k in data: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
370 data[k] = data[k].decode() |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
371 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
372 return tpl % data |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
373 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
374 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
375 def gettopicstable(): |
19424
762e51ce3411
gendoc: add showtopic
Takumi IINO <trot.thunder@gmail.com>
parents:
19423
diff
changeset
|
376 extrahelptable = [ |
41014
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:
42281
diff
changeset
|
380 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
381 [b"hgignore.5"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
382 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
383 loaddoc(b'hgignore.5'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
384 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
385 ), |
41014
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), |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
42281
diff
changeset
|
388 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
389 [b"hgignore.5.gendoc"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
390 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
391 loaddoc(b'hgignore'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
392 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
393 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
394 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
395 [b"hgrc.5.gendoc"], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
396 b'', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
397 loaddoc(b'config'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
398 help.TOPIC_CATEGORY_CONFIG, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
399 ), |
19424
762e51ce3411
gendoc: add showtopic
Takumi IINO <trot.thunder@gmail.com>
parents:
19423
diff
changeset
|
400 ] |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
42281
diff
changeset
|
403 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
404 def findtopics(helptable, include=[], exclude=[]): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
406 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
408 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
409 found = [] |
40291
170926caf44c
help: adding support for command categories
rdamazio@google.com
parents:
32375
diff
changeset
|
410 for h in helptable: |
170926caf44c
help: adding support for command categories
rdamazio@google.com
parents:
32375
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 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
416 found.append((names, sec, doc)) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
417 return found |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
418 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
419 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
420 def showtopic(ui, topic, wraptpl=False): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
421 """Render a help topic |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
422 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
423 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
424 ui: the UI object to output to |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
425 topic: the topic name to output |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
427 pages' header/footer |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
428 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
429 found = findtopics(gettopicstable(), include=[topic]) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
430 if not found: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
432 sys.exit(1) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
433 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
434 if wraptpl: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
435 header = _rendertpl( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
436 'topicheader.txt', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
437 {'topicname': topic, 'topictitle': minirst.section(found[0][1])}, |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
438 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
439 ui.write(header.encode()) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
440 helpprinter(ui, found, None) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
441 return True |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
442 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
443 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
444 def helpprinter(ui, topics, sectionfunc): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
445 """Print a help topic |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
446 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
447 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
448 ui: the UI object to output to |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
449 topics: a list of help topics to output |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
450 sectionfunc: a callback to write the section title |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
451 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
452 for h in topics: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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: |
41014
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) |
41014
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:
42281
diff
changeset
|
464 |
52048
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
465 def showextension(ui, extensionname, debugcmds=False): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
466 """Render the help text for an extension |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
467 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
468 Args: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
469 ui: the UI object to output to |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
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:
52047
diff
changeset
|
472 """ |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
473 mod = extensions.load(ui, extensionname, None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
474 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
475 header = _rendertpl( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
476 'extheader.txt', |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
477 {'extname': extensionname, 'exttitle': minirst.section(extensionname)}, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
478 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
479 ui.write(header.encode()) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
480 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
481 shortdoc, longdoc = _splitdoc(mod) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
482 if shortdoc: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
484 if longdoc: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
485 ui.write(minirst.subsection(_(b"Description"))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
487 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
488 cmdtable = getattr(mod, 'cmdtable', None) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
489 if cmdtable: |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
490 ui.write(minirst.subsection(_(b'Commands'))) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
491 commandprinter( |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
492 ui, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
493 cmdtable, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
494 minirst.subsubsection, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
495 minirst.subsubsubsection, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
496 debugcmds=debugcmds, |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
497 ) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
498 |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
499 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
500 def commandprinter(ui, cmdtable, sectionfunc, subsectionfunc, debugcmds=False): |
42281
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
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:
42279
diff
changeset
|
502 documentations, grouped by command category. |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
503 |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
504 Args: |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
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:
42279
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:
42279
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:
42279
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:
42279
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:
42279
diff
changeset
|
510 |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
511 'phase|alias1|alias2': ( |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
512 <function phase at 0x7f0816b05e60>, |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
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:
42279
diff
changeset
|
514 ..., |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
515 ('r', 'rev', [], 'target revision', 'REV')], |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
516 '[-p|-d|-s] [-f] [-r] [REV...]' |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
517 ) |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
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:
42279
diff
changeset
|
519 subsectionfunc: minirst function to format command headers |
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
520 """ |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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 |
42278
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
524 def helpcategory(cmd): |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
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:
42277
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:
42277
diff
changeset
|
527 """ |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
528 fullname = h[cmd] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
529 details = cmdtable[fullname] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
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:
42277
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:
42277
diff
changeset
|
532 |
42279
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
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:
42278
diff
changeset
|
534 for cmd in cmds: |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
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:
42278
diff
changeset
|
536 # rendered below, so we raise an AssertionError. |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
diff
changeset
|
537 if helpcategory(cmd) not in cmdsbycategory: |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
diff
changeset
|
538 raise AssertionError( |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
diff
changeset
|
539 "The following command did not register its (category) in " |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
540 "help.CATEGORY_ORDER: %s (%s)" % (cmd, helpcategory(cmd)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42281
diff
changeset
|
541 ) |
42279
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
diff
changeset
|
542 cmdsbycategory[helpcategory(cmd)].append(cmd) |
037a97d62625
gendoc: guarantee that all commands were processed
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42278
diff
changeset
|
543 |
42278
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
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:
42277
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:
42277
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:
42277
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:
42277
diff
changeset
|
548 categorycmds = cmdsbycategory[category] |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
549 if not categorycmds: |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
550 # Skip empty categories |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
diff
changeset
|
551 continue |
3816e361e3d8
gendoc: group commands by category in man page and HTML help
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42277
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:
42277
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:
42277
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:
42277
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:
42277
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:
42277
diff
changeset
|
557 for f in sorted(categorycmds): |
42277
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
558 d = get_cmd(h[f], cmdtable) |
42281
a42cc325b682
gendoc: nest command headers under category headers
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
42279
diff
changeset
|
559 ui.write(subsectionfunc(d[b'cmd'])) |
42277
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
560 # short description |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
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 |
42277
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
563 ui.write(b"::\n\n") |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
564 synopsislines = d[b'synopsis'].splitlines() |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
565 for line in synopsislines: |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
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:
41040
diff
changeset
|
567 # synopsis |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
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:
41040
diff
changeset
|
569 ui.write(b'\n') |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
570 # description |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
571 ui.write(b"%s\n\n" % d[b'desc'][1]) |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
572 |
42277
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
573 # options |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
574 def _optsection(s): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
575 return b"%s:\n\n" % s |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
576 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
577 _optionsprinter(ui, d, _optsection) |
42277
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
578 # aliases |
0786b791b3b5
gendoc: indent loop to make next patch more legible
Sietse Brouwer <sbbrouwer@gmail.com>
parents:
41040
diff
changeset
|
579 if d[b'aliases']: |
46570
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46569
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:
46569
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:
46569
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:
46569
diff
changeset
|
583 ui.write( |
85ec89c47a04
gendoc: use an empty comment so aliases are separated from previous elements
Kyle Lippincott <spectral@google.com>
parents:
46569
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:
46569
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:
42281
diff
changeset
|
587 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
588 def _optionsprinter(ui, cmd, sectionfunc): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
590 opt_output = list(cmd[b'opts']) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
591 if opt_output: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
593 ui.write(sectionfunc(_(b"Options"))) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
594 multioccur = False |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
595 for optstr, desc in opt_output: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
596 if desc: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
597 s = b"%-*s %s" % (opts_len, optstr, desc) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
598 else: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
599 s = optstr |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
600 ui.write(b"%s\n" % s) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
601 if optstr.endswith(b"[+]>"): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
602 multioccur = True |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
603 if multioccur: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
604 ui.write( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
606 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
607 ui.write(b"\n") |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
608 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
609 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
610 def allcommandnames(cmdtable, debugcmds=False): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
612 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
613 Args: |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
615 debugcmds: whether to include debug commands |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
616 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
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:
51882
diff
changeset
|
619 """ |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
620 allcmdnames = {} |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
621 for rawnames, attr in cmdtable.items(): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
622 mainname = rawnames.split(b"|")[0].lstrip(b"^") |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
623 if not debugcmds and mainname.startswith(b"debug"): |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
624 continue |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
625 allcmdnames[mainname] = rawnames |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
626 return allcmdnames |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
627 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
628 |
12781
0d09991f91ee
gendoc: automatically create help for default extensions.
Erik Zielke <ez@aragost.com>
parents:
12780
diff
changeset
|
629 def allextensionnames(): |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
630 """Get a set of all known extension names""" |
41014
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:
42281
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__": |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
635 parser = argparse.ArgumentParser( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
636 prog='gendoc', description="Generate mercurial documentation files" |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
637 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
639 parser.add_argument( |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
640 '-d', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
641 '--debug-cmds', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
642 action='store_true', |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
643 help="Show debug commands in help pages", |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
644 ) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
645 args = parser.parse_args() |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
646 |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
647 doc = encoding.strtolocal(args.doc) |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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 |
30564
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() |
46569
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46568
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:
46568
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:
46568
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:
46568
diff
changeset
|
654 extensions.loadall(ui) |
eb36f7a71291
gendoc: add support for loading extensions from config settings
Kyle Lippincott <spectral@google.com>
parents:
46568
diff
changeset
|
655 |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
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:
51882
diff
changeset
|
657 ui.debugflag = debugcmds |
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
658 |
52048
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
659 # Render the 'all-in-one' giant documentation file |
41014
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) |
52048
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
663 elif doc == b'commandlist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
664 showcommandlist(ui, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
665 elif doc == b'topiclist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
666 showtopiclist(ui) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
667 elif doc == b'extensionlist': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
668 showextensionlist(ui) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
669 # Render the help index/main page |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
670 elif doc == b'index': |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
671 showhelpindex(ui, debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
diff
changeset
|
673 elif doc.startswith(b'cmd-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
674 showcommand(ui, doc[4:]) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
675 elif doc.startswith(b'topic-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
676 showtopic(ui, doc[6:], wraptpl=True) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
677 elif doc.startswith(b'ext-'): |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
diff
changeset
|
678 showextension(ui, doc[4:], debugcmds=debugcmds) |
2a875530a023
doc: generate separate commands/topics/extension pages
Ludovic Chabant <ludovic@chabant.com>
parents:
52047
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:
52047
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: |
52047
1f5974f8f730
doc: refactor gendoc for better reusability
Ludovic Chabant <ludovic@chabant.com>
parents:
51882
diff
changeset
|
682 showtopic(ui, doc) |