Browse Source

catch and format exceptions in arg parsing

Thomas Waldmann 9 years ago
parent
commit
b630ae9231
1 changed files with 9 additions and 1 deletions
  1. 9 1
      borg/archiver.py

+ 9 - 1
borg/archiver.py

@@ -1522,7 +1522,15 @@ def main():  # pragma: no cover
     setup_signal_handlers()
     setup_signal_handlers()
     archiver = Archiver()
     archiver = Archiver()
     msg = None
     msg = None
-    args = archiver.get_args(sys.argv, os.environ.get('SSH_ORIGINAL_COMMAND'))
+    try:
+        args = archiver.get_args(sys.argv, os.environ.get('SSH_ORIGINAL_COMMAND'))
+    except Error as e:
+        msg = e.get_message()
+        if e.traceback:
+            msg += "\n%s\n%s" % (traceback.format_exc(), sysinfo())
+        # we might not have logging setup yet, so get out quickly
+        print(msg, file=sys.stderr)
+        sys.exit(e.exit_code)
     try:
     try:
         exit_code = archiver.run(args)
         exit_code = archiver.run(args)
     except Error as e:
     except Error as e: