Mercurial > hg
changeset 4950:93b7e2fa7ee3
help: avoid traceback if an extension has only debug commands
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Thu, 19 Jul 2007 19:43:25 -0300 |
parents | b8076522e889 |
children | 667290b6c95e |
files | mercurial/commands.py tests/test-extension tests/test-extension.out |
diffstat | 3 files changed, 55 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Jul 18 14:00:55 2007 -0700 +++ b/mercurial/commands.py Thu Jul 19 19:43:25 2007 -0300 @@ -1340,7 +1340,7 @@ addglobalopts(False) - def helplist(select=None): + def helplist(header, select=None): h = {} cmds = {} for c, e in table.items(): @@ -1358,6 +1358,11 @@ h[f] = doc.splitlines(0)[0].rstrip() cmds[f] = c.lstrip("^") + if not h: + ui.status(_('no commands defined\n')) + return + + ui.status(header) fns = h.keys() fns.sort() m = max(map(len, fns)) @@ -1407,14 +1412,10 @@ try: ct = mod.cmdtable except AttributeError: - ct = None - if not ct: - ui.status(_('no commands defined\n')) - return - - ui.status(_('list of commands:\n\n')) + ct = {} + modcmds = dict.fromkeys([c.split('|', 1)[0] for c in ct]) - helplist(modcmds.has_key) + helplist(_('list of commands:\n\n'), modcmds.has_key) if name and name != 'shortlist': i = None @@ -1438,11 +1439,11 @@ # list of commands if name == "shortlist": - ui.status(_('basic commands:\n\n')) + header = _('basic commands:\n\n') else: - ui.status(_('list of commands:\n\n')) - - helplist() + header = _('list of commands:\n\n') + + helplist(header) # list all option lists opt_output = []
--- a/tests/test-extension Wed Jul 18 14:00:55 2007 -0700 +++ b/tests/test-extension Thu Jul 19 19:43:25 2007 -0300 @@ -64,3 +64,18 @@ echo '[extensions]' > $HGRCPATH echo "empty = $emptypath" >> $HGRCPATH hg help empty + +cat > debugextension.py <<EOF +'''only debugcommands +''' +def debugfoobar(ui, repo, *args, **opts): + "yet another debug command" + pass + +cmdtable = {"debugfoobar": (debugfoobar, (), "hg debugfoobar")} +EOF +debugpath=`pwd`/debugextension.py +echo '[extensions]' > $HGRCPATH +echo "debugextension = $debugpath" >> $HGRCPATH +hg help debugextension +hg --debug help debugextension
--- a/tests/test-extension.out Wed Jul 18 14:00:55 2007 -0700 +++ b/tests/test-extension.out Thu Jul 19 19:43:25 2007 -0300 @@ -22,3 +22,30 @@ empty extension - empty cmdtable no commands defined +debugextension extension - only debugcommands + +no commands defined +debugextension extension - only debugcommands + +list of commands: + + debugfoobar: + yet another debug command + +global options: + -R --repository repository root directory or symbolic path name + --cwd change working directory + -y --noninteractive do not prompt, assume 'yes' for any required answers + -q --quiet suppress output + -v --verbose enable additional output + --config set/override config option + --debug enable debugging output + --debugger start debugger + --encoding set the charset encoding (default: ascii) + --encodingmode set the charset encoding mode (default: strict) + --lsprof print improved command execution profile + --traceback print traceback on exception + --time time how long the command takes + --profile print command execution profile + --version output version information and exit + -h --help display help and exit