]> git.decadent.org.uk Git - dak.git/blobdiff - dak/dak.py
Merge commit 'mhy/master' into merge
[dak.git] / dak / dak.py
index 052f3b3ef7b8b7e48717116809771f20d80d75d6..27ef389f16ae332536eb49f6918bad56bc35b0c4 100755 (executable)
@@ -34,8 +34,13 @@ G{importgraph}
 ################################################################################
 
 import sys
+import traceback
 import daklib.utils
 
+from daklib.daklog import Logger
+from daklib.config import Config
+from daklib.dak_exceptions import CantOpenError
+
 ################################################################################
 
 def init():
@@ -61,10 +66,8 @@ def init():
 
         ("process-new",
          "Process NEW and BYHAND packages"),
-        ("process-unchecked",
+        ("process-upload",
          "Process packages in queue/unchecked"),
-        ("process-accepted",
-         "Install packages into the pool"),
 
         ("make-suite-file-list",
          "Generate lists of packages per suite for apt-ftparchive"),
@@ -129,6 +132,8 @@ def init():
          "Generate statistics"),
         ("bts-categorize",
          "Categorize uncategorized bugs filed against ftp.debian.org"),
+        ("import-known-changes",
+         "import old changes files into known_changes table"),
         ("add-user",
          "Add a user to the archive"),
         ]
@@ -152,6 +157,12 @@ Available commands:"""
 def main():
     """Launch dak functionality."""
 
+
+    try:
+        logger = Logger(Config(), 'dak top-level', print_starting=False)
+    except CantOpenError:
+        logger = None
+
     functionality = init()
     modules = [ command for (command, _) in functionality ]
 
@@ -189,9 +200,25 @@ def main():
     # Invoke the module
     module = __import__(cmdname.replace("-","_"))
 
-    module.main()
+    try:
+        module.main()
+    except KeyboardInterrupt:
+        msg = 'KeyboardInterrupt caught; exiting'
+        print msg
+        if logger:
+            logger.log([msg])
+        sys.exit(1)
+    except SystemExit:
+        pass
+    except:
+        if logger:
+            for line in traceback.format_exc().split('\n')[:-1]:
+                logger.log(['exception', line])
+        raise
 
 ################################################################################
 
 if __name__ == "__main__":
+    os.environ['LANG'] = 'C'
+    os.environ['LC_ALL'] = 'C'
     main()