]> arthur.barton.de Git - bup.git/commitdiff
options.py: o.fatal(): print error after, not before, usage message.
authorAvery Pennarun <apenwarr@gmail.com>
Sun, 20 Feb 2011 05:37:16 +0000 (21:37 -0800)
committerAvery Pennarun <apenwarr@gmail.com>
Sun, 20 Feb 2011 05:38:28 +0000 (21:38 -0800)
git prints the error *before* the usage message, but the more I play with
it, the more I'm annoyed by that behaviour.  The usage message can be pretty
long, and the error gots lost way above the usage message.  The most
important thing *is* the error, so let's print it last.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
lib/bup/options.py
main.py

index 9be71110622e8aa92e57aed67bbe69fc2fedae93..c9a6cf52ea59a2542558c1ddbf5cb39146dfa3e3 100644 (file)
@@ -184,14 +184,15 @@ class Options:
     def usage(self, msg=""):
         """Print usage string to stderr and abort."""
         sys.stderr.write(self._usagestr)
+        if msg:
+            sys.stderr.write(msg)
         e = self._onabort and self._onabort(msg) or None
         if e:
             raise e
 
-    def fatal(self, s):
+    def fatal(self, msg):
         """Print an error message to stderr and abort with usage string."""
-        msg = 'error: %s\n' % s
-        sys.stderr.write(msg)
+        msg = '\nerror: %s\n' % msg
         return self.usage(msg)
 
     def parse(self, args):
diff --git a/main.py b/main.py
index bd6fb0b8964925f78a7f61899899e01457f6915e..c8ffce2877da4cab5e0e6462c937ad0d6b21eec7 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -29,7 +29,7 @@ from bup.helpers import *
 # after running 'bup newliner', the tty_width() ioctl won't work anymore
 os.environ['WIDTH'] = str(tty_width())
 
-def usage():
+def usage(msg=""):
     log('Usage: bup [-?|--help] [-d BUP_DIR] [--debug] [--profile] '
         '<command> [options...]\n\n')
     common = dict(
@@ -62,6 +62,8 @@ def usage():
     
     log("See 'bup help COMMAND' for more information on " +
         "a specific command.\n")
+    if msg:
+        log("\n%s\n" % msg)
     sys.exit(99)
 
 
@@ -73,8 +75,7 @@ try:
     optspec = ['help', 'version', 'debug', 'profile', 'bup-dir=']
     global_args, subcmd = getopt.getopt(argv[1:], '?VDd:', optspec)
 except getopt.GetoptError, ex:
-    log('error: ' + ex.msg + '\n')
-    usage()
+    usage('error: %s' % ex.msg)
 
 help_requested = None
 dest_dir = None
@@ -93,8 +94,7 @@ for opt in global_args:
     elif opt[0] in ['-d', '--bup-dir']:
         dest_dir = opt[1]
     else:
-        log('error: unexpected option "%s"\n' % opt[0])
-        usage()
+        usage('error: unexpected option "%s"' % opt[0])
 
 if len(subcmd) == 0:
     if help_requested:
@@ -124,8 +124,7 @@ def subpath(s):
 
 subcmd[0] = subpath(subcmd_name)
 if not os.path.exists(subcmd[0]):
-    log('error: unknown command "%s"\n' % subcmd_name)
-    usage()
+    usage('error: unknown command "%s"' % subcmd_name)
 
 already_fixed = atoi(os.environ.get('BUP_FORCE_TTY'))
 if subcmd_name in ['mux', 'ftp', 'help']: