[dak/master 4/4] Catch and log all exceptions from top-level dak command.
Signed-off-by: Chris Lamb <lamby@debian.org>
---
dak/dak.py | 18 +++++++++++++++++-
1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/dak/dak.py b/dak/dak.py
index 052f3b3..448c137 100755
--- a/dak/dak.py
+++ b/dak/dak.py
@@ -34,8 +34,12 @@ G{importgraph}
################################################################################
import sys
+import traceback
import daklib.utils
+from daklib.daklog import Logger
+from daklib.config import Config
+
################################################################################
def init():
@@ -152,6 +156,8 @@ Available commands:"""
def main():
"""Launch dak functionality."""
+ logger = Logger(Config(), 'dak top-level')
+
functionality = init()
modules = [ command for (command, _) in functionality ]
@@ -189,7 +195,17 @@ def main():
# Invoke the module
module = __import__(cmdname.replace("-","_"))
- module.main()
+ try:
+ module.main()
+ except KeyboardInterrupt:
+ msg = 'KeyboardInterrupt caught; exiting'
+ print msg
+ logger.log([msg])
+ sys.exit(1)
+ except:
+ for line in traceback.format_exc().split('\n')[:-1]:
+ logger.log(['exception', line])
+ raise
################################################################################
--
1.6.3.3
Reply to: