diff mercurial/commands.py @ 293:11d64332a1cb

hg help improvements -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hg help improvements Handle showing option help in commands.py rather than fancyopts Show getopt exception string if argument parsing fails and call help Show help for invalid arguments Show exception string for invalid arguments with -d manifest hash: 9bd3e908cc080c21bb5e85822f675c35a8396fef -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCp8GNywK+sNU5EO8RAoJfAJ4pB0I4xH4CTuGmAwArfBzIsT9plACeImkm 4ml9x78fmPgKpDYIr/qhfVY= =YeZv -----END PGP SIGNATURE-----
author mpm@selenic.com
date Wed, 08 Jun 2005 20:11:57 -0800
parents 07c6cb9fd1c5
children f8d56da6ac8f
line wrap: on
line diff
--- a/mercurial/commands.py	Wed Jun 08 17:38:46 2005 -0800
+++ b/mercurial/commands.py	Wed Jun 08 20:11:57 2005 -0800
@@ -77,6 +77,17 @@
         try:
             i = find(cmd)
             ui.write("%s\n\n" % i[2])
+
+            if i[1]:
+                for s, l, d, c in i[1]:
+                    opt=' '
+                    if s: opt = opt + '-' + s + ' '
+                    if l: opt = opt + '--' + l + ' '
+                    if d: opt = opt + '(' + str(d) + ')'
+                    ui.write(opt, "\n")
+                    if c: ui.write('   %s\n' % c)
+                ui.write("\n")
+
             ui.write(i[0].__doc__, "\n")
         except UnknownCommand:
             ui.warn("hg: unknown command %s\n" % cmd)
@@ -603,7 +614,12 @@
     signal.signal(signal.SIGTERM, catchterm)
 
     cmdoptions = {}
-    args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2])
+    try:
+        args = fancyopts.fancyopts(args, i[1], cmdoptions, i[2])
+    except fancyopts.getopt.GetoptError, inst:
+        u.warn("hg %s: %s\n" % (cmd, inst))
+        help(u, cmd)
+        sys.exit(-1)
 
     if cmd not in norepo.split():
         repo = hg.repository(ui = u)
@@ -627,7 +643,8 @@
         tb = traceback.extract_tb(sys.exc_info()[2])
         if len(tb) > 2: # no
             raise
-        raise
+        u.debug(inst, "\n")
         u.warn("%s: invalid arguments\n" % i[0].__name__)
-        u.warn("syntax: %s\n" % i[2])
+        help(u, cmd)
         sys.exit(-1)
+