comparison mercurial/commands.py @ 3798:17a11f4ff260

Add basic support for help topics and a dates topic
author Matt Mackall <mpm@selenic.com>
date Tue, 05 Dec 2006 16:06:13 -0600
parents 8d603f8567ae
children 58133ba5847d
comparison
equal deleted inserted replaced
3794:630caaf29815 3798:17a11f4ff260
8 from demandload import demandload 8 from demandload import demandload
9 from node import * 9 from node import *
10 from i18n import gettext as _ 10 from i18n import gettext as _
11 demandload(globals(), "bisect os re sys signal imp urllib pdb shlex stat") 11 demandload(globals(), "bisect os re sys signal imp urllib pdb shlex stat")
12 demandload(globals(), "fancyopts ui hg util lock revlog bundlerepo") 12 demandload(globals(), "fancyopts ui hg util lock revlog bundlerepo")
13 demandload(globals(), "difflib patch time") 13 demandload(globals(), "difflib patch time help")
14 demandload(globals(), "traceback errno version atexit") 14 demandload(globals(), "traceback errno version atexit")
15 demandload(globals(), "archival changegroup cmdutil hgweb.server sshserver") 15 demandload(globals(), "archival changegroup cmdutil hgweb.server sshserver")
16 16
17 class UnknownCommand(Exception): 17 class UnknownCommand(Exception):
18 """Exception raised if command is not in the command table.""" 18 """Exception raised if command is not in the command table."""
1139 commands = cmds[f].replace("|",", ") 1139 commands = cmds[f].replace("|",", ")
1140 ui.write(" %s:\n %s\n"%(commands, h[f])) 1140 ui.write(" %s:\n %s\n"%(commands, h[f]))
1141 else: 1141 else:
1142 ui.write(' %-*s %s\n' % (m, f, h[f])) 1142 ui.write(' %-*s %s\n' % (m, f, h[f]))
1143 1143
1144 def helptopic(name):
1145 v = None
1146 for i in help.helptable:
1147 l = i.split('|')
1148 if name in l:
1149 v = i
1150 header = l[-1]
1151 if not v:
1152 raise UnknownCommand(name)
1153
1154 # description
1155 doc = help.helptable[v]
1156 if not doc:
1157 doc = _("(No help text available)")
1158
1159 ui.write("%s\n" % header)
1160 ui.write("%s\n" % doc.rstrip())
1161
1144 def helpext(name): 1162 def helpext(name):
1145 try: 1163 try:
1146 mod = findext(name) 1164 mod = findext(name)
1147 except KeyError: 1165 except KeyError:
1148 raise UnknownCommand(name) 1166 raise UnknownCommand(name)
1161 1179
1162 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in mod.cmdtable]) 1180 modcmds = dict.fromkeys([c.split('|', 1)[0] for c in mod.cmdtable])
1163 helplist(modcmds.has_key) 1181 helplist(modcmds.has_key)
1164 1182
1165 if name and name != 'shortlist': 1183 if name and name != 'shortlist':
1166 try: 1184 i = None
1167 helpcmd(name) 1185 for f in (helpcmd, helptopic, helpext):
1168 except UnknownCommand: 1186 try:
1169 helpext(name) 1187 f(name)
1188 i = None
1189 break
1190 except UnknownCommand, inst:
1191 i = inst
1192 if i:
1193 raise i
1170 1194
1171 else: 1195 else:
1172 # program name 1196 # program name
1173 if ui.verbose or with_version: 1197 if ui.verbose or with_version:
1174 version_(ui) 1198 version_(ui)