]> jfr.im git - erebus.git/blobdiff - ctlmod.py
admin_config - add !getconfig, remove some unused functions
[erebus.git] / ctlmod.py
index dbf9e08a5faa86abd5ce627da5fc8435f3073bfa..3e30892d25fbb7c19e32c014c99cce82dbacd9c1 100644 (file)
--- a/ctlmod.py
+++ b/ctlmod.py
@@ -4,7 +4,7 @@
 
 from __future__ import print_function
 
-import sys, time, importlib
+import sys, time, importlib, traceback
 import modlib
 
 if sys.version_info.major >= 3:
@@ -31,6 +31,8 @@ def load(parent, modname, dependent=False):
                        print("failed: %s)" % (modstatus), end=' ')
                else:
                        print("failed: %s." % (modstatus))
+                       if isinstance(modstatus, modlib.error) and isinstance(modstatus.errormsg, BaseException):
+                               traceback.print_exception(modstatus.errormsg)
        elif modstatus == True:
                if dependent:
                        print("OK)", end=' ')
@@ -78,15 +80,17 @@ def _load(parent, modname, dependent=False):
                        if bool(int(parent.cfg.get('autoloads', dep, default=1))):
                                if dep not in modules:
                                        depret = load(parent, dep, dependent=True)
-                                       if depret is not None:
-                                               if not depret:
-                                                       successstatus.append("softdep %s failed" % (dep))
+                                       if depret is not None and not depret:
+                                               successstatus.append("softdep %s failed" % (dep))
                        else:
                                successstatus.append("softdep %s disabled" % (dep))
                        #swallow errors loading - softdeps are preferred, not required
 
 
-               ret = mod.modstart(parent)
+               try:
+                       ret = mod.modstart(parent)
+               except Exception as e:
+                       return modlib.error(e)
                if ret is None:
                        ret = True
                if not ret: