6 from mercurial import demandimport; demandimport.enable() |
6 from mercurial import demandimport; demandimport.enable() |
7 from mercurial import encoding |
7 from mercurial import encoding |
8 from mercurial.commands import table, globalopts |
8 from mercurial.commands import table, globalopts |
9 from mercurial.i18n import _ |
9 from mercurial.i18n import _ |
10 from mercurial.help import helptable |
10 from mercurial.help import helptable |
|
11 from mercurial import extensions |
11 |
12 |
12 def get_desc(docstr): |
13 def get_desc(docstr): |
13 if not docstr: |
14 if not docstr: |
14 return "", "" |
15 return "", "" |
15 # sanitize |
16 # sanitize |
65 ui.write("%s\n%s\n\n" % (s, "-" * encoding.colwidth(s))) |
66 ui.write("%s\n%s\n\n" % (s, "-" * encoding.colwidth(s))) |
66 |
67 |
67 def subsection(ui, s): |
68 def subsection(ui, s): |
68 ui.write("%s\n%s\n\n" % (s, '"' * encoding.colwidth(s))) |
69 ui.write("%s\n%s\n\n" % (s, '"' * encoding.colwidth(s))) |
69 |
70 |
|
71 def subsubsection(ui, s): |
|
72 ui.write("%s\n%s\n\n" % (s, "." * encoding.colwidth(s))) |
|
73 |
|
74 def subsubsubsection(ui, s): |
|
75 ui.write("%s\n%s\n\n" % (s, "#" * encoding.colwidth(s))) |
|
76 |
70 |
77 |
71 def show_doc(ui): |
78 def show_doc(ui): |
72 # print options |
79 # print options |
73 section(ui, _("Options")) |
80 section(ui, _("Options")) |
74 for optstr, desc in get_opts(globalopts): |
81 for optstr, desc in get_opts(globalopts): |
75 ui.write("%s\n%s\n\n" % (optstr, desc)) |
82 ui.write("%s\n%s\n\n" % (optstr, desc)) |
76 |
83 |
77 # print cmds |
84 # print cmds |
78 section(ui, _("Commands")) |
85 section(ui, _("Commands")) |
79 commandprinter(ui, table) |
86 commandprinter(ui, table, subsection) |
80 |
87 |
81 # print topics |
88 # print topics |
82 for names, sec, doc in helptable: |
89 for names, sec, doc in helptable: |
83 for name in names: |
90 for name in names: |
84 ui.write(".. _%s:\n" % name) |
91 ui.write(".. _%s:\n" % name) |
87 if hasattr(doc, '__call__'): |
94 if hasattr(doc, '__call__'): |
88 doc = doc() |
95 doc = doc() |
89 ui.write(doc) |
96 ui.write(doc) |
90 ui.write("\n") |
97 ui.write("\n") |
91 |
98 |
92 def commandprinter(ui, cmdtable): |
99 section(ui, _("Extensions")) |
|
100 ui.write(_("This section contains help for extensions that is distributed " |
|
101 "together with Mercurial. Help for other extensions is available " |
|
102 "in the help system.")) |
|
103 ui.write("\n\n" |
|
104 ".. contents::\n" |
|
105 " :class: htmlonly\n" |
|
106 " :local:\n" |
|
107 " :depth: 1\n\n") |
|
108 |
|
109 for extensionname in sorted(allextensionnames()): |
|
110 mod = extensions.load(None, extensionname, None) |
|
111 subsection(ui, extensionname) |
|
112 ui.write("%s\n\n" % mod.__doc__) |
|
113 cmdtable = getattr(mod, 'cmdtable', None) |
|
114 if cmdtable: |
|
115 subsubsection(ui, _('Commands')) |
|
116 commandprinter(ui, cmdtable, subsubsubsection) |
|
117 |
|
118 def commandprinter(ui, cmdtable, sectionfunc): |
93 h = {} |
119 h = {} |
94 for c, attr in cmdtable.items(): |
120 for c, attr in cmdtable.items(): |
95 f = c.split("|")[0] |
121 f = c.split("|")[0] |
96 f = f.lstrip("^") |
122 f = f.lstrip("^") |
97 h[f] = c |
123 h[f] = c |
100 |
126 |
101 for f in cmds: |
127 for f in cmds: |
102 if f.startswith("debug"): |
128 if f.startswith("debug"): |
103 continue |
129 continue |
104 d = get_cmd(h[f], cmdtable) |
130 d = get_cmd(h[f], cmdtable) |
105 subsection(ui, d['cmd']) |
131 sectionfunc(ui, d['cmd']) |
106 # synopsis |
132 # synopsis |
107 ui.write("``%s``\n" % d['synopsis'].replace("hg ","", 1)) |
133 ui.write("``%s``\n" % d['synopsis'].replace("hg ","", 1)) |
108 ui.write("\n") |
134 ui.write("\n") |
109 # description |
135 # description |
110 ui.write("%s\n\n" % d['desc'][1]) |
136 ui.write("%s\n\n" % d['desc'][1]) |
123 # aliases |
149 # aliases |
124 if d['aliases']: |
150 if d['aliases']: |
125 ui.write(_(" aliases: %s\n\n") % " ".join(d['aliases'])) |
151 ui.write(_(" aliases: %s\n\n") % " ".join(d['aliases'])) |
126 |
152 |
127 |
153 |
|
154 def allextensionnames(): |
|
155 extensionnames = [] |
|
156 |
|
157 extensionsdictionary = extensions.enabled()[0] |
|
158 extensionnames.extend(extensionsdictionary.keys()) |
|
159 |
|
160 extensionsdictionary = extensions.disabled()[0] |
|
161 extensionnames.extend(extensionsdictionary.keys()) |
|
162 |
|
163 return extensionnames |
|
164 |
|
165 |
128 if __name__ == "__main__": |
166 if __name__ == "__main__": |
129 show_doc(sys.stdout) |
167 show_doc(sys.stdout) |