]> git.decadent.org.uk Git - dak.git/commitdiff
Catch and log all exceptions from top-level dak command.
authorChris Lamb <lamby@debian.org>
Thu, 29 Oct 2009 13:05:51 +0000 (13:05 +0000)
committerChris Lamb <lamby@debian.org>
Thu, 29 Oct 2009 13:05:51 +0000 (13:05 +0000)
Signed-off-by: Chris Lamb <lamby@debian.org>
dak/dak.py

index 052f3b3ef7b8b7e48717116809771f20d80d75d6..448c137f9ca903687e0ab70bf21e53fd039616da 100755 (executable)
@@ -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
 
 ################################################################################