annotate doc/gendoc.py @ 52636:0e11e532c958

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