X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/9cf6ec9b1f5e6e4877d6c639327796a136f49b42..52c80cff91dce5fa14ae903c6c2bf20533ccca46:/ctlmod.py diff --git a/ctlmod.py b/ctlmod.py index c273638..3e30892 100644 --- 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=' ') @@ -85,7 +87,10 @@ def _load(parent, modname, dependent=False): #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: