improve at-end error logging

always use archiver.print_error, so it goes to sys.stderr

always say "Error: ..." for errors

for rc != 0 always say "Exiting with failure status ..."

catch all exceptions subclassing Exception, so we can log them in same way and set exit_code=1
This commit is contained in:
Thomas Waldmann 2015-06-25 23:57:38 +02:00
parent 6964799d13
commit 89db9b8b9e
1 changed files with 8 additions and 8 deletions

View File

@ -866,19 +866,19 @@ def main():
try: try:
exit_code = archiver.run(sys.argv[1:]) exit_code = archiver.run(sys.argv[1:])
except Error as e: except Error as e:
traceback.print_exc() archiver.print_error(e.get_message() + "\n%s" % traceback.format_exc())
archiver.print_error(e.get_message())
exit_code = e.exit_code exit_code = e.exit_code
except RemoteRepository.RPCError as e: except RemoteRepository.RPCError as e:
print(e) archiver.print_error('Error: Remote Exception.\n%s' % str(e))
exit_code = 1
except Exception:
archiver.print_error('Error: Local Exception.\n%s' % traceback.format_exc())
exit_code = 1 exit_code = 1
except KeyboardInterrupt: except KeyboardInterrupt:
traceback.print_exc() archiver.print_error('Error: Keyboard interrupt.\n%s' % traceback.format_exc())
archiver.print_error('Error: Keyboard interrupt')
exit_code = 1 exit_code = 1
else: if exit_code:
if exit_code: archiver.print_error('Exiting with failure status due to previous errors')
archiver.print_error('Exiting with failure status due to previous errors')
sys.exit(exit_code) sys.exit(exit_code)
if __name__ == '__main__': if __name__ == '__main__':