X-Git-Url: https://jfr.im/git/erebus.git/blobdiff_plain/96d0b31e1fdd54d53536e8b719ed89784aaffeaa..fcecea349ff7f83ddf27b3234cd1bce7924e23e7:/ctlmod.py diff --git a/ctlmod.py b/ctlmod.py index 18876a0..0a4c784 100644 --- a/ctlmod.py +++ b/ctlmod.py @@ -12,11 +12,14 @@ def modhas(modname, attname): return getattr(modules[modname], attname, None) is def load(parent, modname): if not isloaded(modname): + sys.path.insert(0, 'modules') try: mod = __import__(modname) - reload(mod) + reload(mod) #in case it's been previously loaded. except BaseException as e: #we don't want even sys.exit() to crash us (in case of malicious module) so use BaseException return modlib.error(e) + finally: + del sys.path[0] #remove ./modules from path, in case there's a name conflict if not hasattr(mod, 'modinfo'): @@ -64,13 +67,14 @@ def reloadmod(parent, modname): else: modules[modname].modstop(parent) try: - return reload(modules[modname]) + reload(modules[modname]) except BaseException as e: return modlib.error(e) - if modhas(modname, 'modrestarted'): modules[modname].modrestarted(parent) - else: modules[modname].modstart(parent) + if modhas(modname, 'modrestarted'): ret = modules[modname].modrestarted(parent) + else: ret = modules[modname].modstart(parent) + return ret else: return load(parent, modname)