]> git.donarmstrong.com Git - dak.git/blobdiff - dak/dak.py
Merged from ftpmaster
[dak.git] / dak / dak.py
index c4d76be89db1626cf3e9bd3f46348dfa96d272ad..0f2280101858fd672b9c6649952a82201a1cf6ef 100755 (executable)
 
 ################################################################################
 
-import sys
-import daklib.utils
+import sys, imp
+import daklib.utils, daklib.extensions
+
+################################################################################
+
+class UserExtension:
+    def __init__(self, user_extension = None):
+        if user_extension:
+           m = imp.load_source("dak_userext", user_extension)
+           d = m.__dict__
+        else:
+            m, d = None, {}
+       self.__dict__["_module"] = m
+       self.__dict__["_d"] = d
+
+    def __getattr__(self, a):
+        if a in self.__dict__: return self.__dict__[a]
+        if a[0] == "_": raise AttributeError, a
+        return self._d.get(a, None)
+
+    def __setattr__(self, a, v):
+       self._d[a] = v
+
+################################################################################
+
+class UserExtension:
+    def __init__(self, user_extension = None):
+        if user_extension:
+           m = imp.load_source("dak_userext", user_extension)
+           d = m.__dict__
+        else:
+            m, d = None, {}
+       self.__dict__["_module"] = m
+       self.__dict__["_d"] = d
+
+    def __getattr__(self, a):
+        if a in self.__dict__: return self.__dict__[a]
+        if a[0] == "_": raise AttributeError, a
+        return self._d.get(a, None)
+
+    def __setattr__(self, a, v):
+       self._d[a] = v
 
 ################################################################################
 
@@ -46,6 +86,8 @@ def init():
          "Archive sanity checks"),
         ("queue-report",
          "Produce a report on NEW and BYHAND packages"),
+        ("show-new",
+         "Output html for packages in NEW"),
         
         ("rm",
          "Remove packages from suites"),
@@ -69,7 +111,9 @@ def init():
          "Clean cruft from incoming"),
         ("clean-proposed-updates",
          "Remove obsolete .changes from proposed-updates"),
-        
+
+        ("transitions",
+         "Manage the release transition file"),
         ("check-overrides",
          "Override cruft checks"),
         ("check-proposed-updates",
@@ -90,6 +134,8 @@ def init():
          "Check for users with no packages in the archive"),
         ("import-archive",
          "Populate SQL database based from an archive tree"),
+        ("import-keyring",
+         "Populate fingerprint/uid table based on a new/updated keyring"),
         ("import-ldap-fingerprints",
          "Syncs fingerprint and uid tables with Debian LDAP db"),
         ("import-users-from-passwd",
@@ -139,6 +185,13 @@ Availble commands:"""
 def main():
     """Launch dak functionality."""
 
+    Cnf = daklib.utils.get_conf()
+
+    if Cnf.has_key("Dinstall::UserExtensions"):
+        userext = UserExtension(Cnf["Dinstall::UserExtensions"])
+    else:
+        userext = UserExtension()
+
     functionality = init()
     modules = [ command for (command, _) in functionality ]
     
@@ -175,6 +228,13 @@ def main():
 
     # Invoke the module
     module = __import__(cmdname.replace("-","_"))
+
+    module.dak_userext = userext
+    userext.dak_module = module
+
+    daklib.extensions.init(cmdname, module, userext)
+    if userext.init is not None: userext.init(cmdname)
+
     module.main()
 
 ################################################################################