X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Fdak.py;h=448c137f9ca903687e0ab70bf21e53fd039616da;hb=4175c85e1f753037baaa891ce7d589d0dc504f39;hp=10407b501be489302dc1e571c87d67f10670a864;hpb=0dada7c5846e0ae676bbe0b81c1065fe75ca9b86;p=dak.git diff --git a/dak/dak.py b/dak/dak.py index 10407b50..448c137f 100755 --- a/dak/dak.py +++ b/dak/dak.py @@ -34,49 +34,11 @@ G{importgraph} ################################################################################ import sys -import imp +import traceback import daklib.utils -import 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 +from daklib.daklog import Logger +from daklib.config import Config ################################################################################ @@ -194,12 +156,7 @@ Available 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() + logger = Logger(Config(), 'dak top-level') functionality = init() modules = [ command for (command, _) in functionality ] @@ -238,13 +195,17 @@ 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() + 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 ################################################################################