From: Avery Pennarun Date: Sun, 20 Feb 2011 05:37:16 +0000 (-0800) Subject: options.py: o.fatal(): print error after, not before, usage message. X-Git-Tag: bup-0.24^2~10 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=bup.git;a=commitdiff_plain;h=5a9bc0a6c31d2d0824261685b6ce7a359729436d options.py: o.fatal(): print error after, not before, usage message. 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 --- diff --git a/lib/bup/options.py b/lib/bup/options.py index 9be7111..c9a6cf5 100644 --- a/lib/bup/options.py +++ b/lib/bup/options.py @@ -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 bd6fb0b..c8ffce2 100755 --- 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] ' ' [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']: