diff --git a/modman/main.py b/modman/main.py index 9620315..bcb5924 100755 --- a/modman/main.py +++ b/modman/main.py @@ -8,31 +8,39 @@ from importing import load_module from utils import printable_exception -def load_files(folder): - folder = Path(folder) - fnames = folder.glob("*.py") - fnames = sorted(fnames) +class ModuleManager: + + def __init__(self, folder): + self.folder = Path(folder) + self.modules = {} + self.update() + + def update(self): + for fn in self.fnames: + print(fn, fn.stat().st_mtime) + name = fn.stem + try: + mod = load_module(name, fn) + except Exception as e: + print(f"loading {name} raised", printable_exception(e)) + continue + try: + func = mod.run + except AttributeError: + print(f"missing run function in {name}") + continue + self.modules[name] = func + + @property + def fnames(self): + fns = self.folder.glob("*.py") + return sorted(fns) - res = {} - for fn in fnames: - print(fn, fn.stat().st_mtime) - name = fn.stem - try: - mod = load_module(name, fn) - except Exception as e: - print(f"loading {name} raised", printable_exception(e)) - continue - try: - func = mod.run - except AttributeError: - print(f"missing run function in {name}") - continue - res[name] = func - return res folder = "scripts" -mods = load_files(folder) +modman = ModuleManager(folder) +mods = modman.modules while True: with ThreadPoolExecutor() as ex: