From a9111c724148634486524f3744c3bbe039f3cc1d Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 14 Oct 2019 12:55:32 +0100 Subject: add ModuleManager.try_reload_modules(), to try reloading in a transaction if any of the modules fails to reload, rollback and use the already loaded modules. closes #179 --- modules/signals.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) (limited to 'modules/signals.py') diff --git a/modules/signals.py b/modules/signals.py index 286852d6..f3adcbb0 100644 --- a/modules/signals.py +++ b/modules/signals.py @@ -58,18 +58,8 @@ class Module(ModuleManager.BaseModule): def _reload_modules(self): self.bot.log.info("Reloading modules") - success = [] - fail = [] - for name in list(self.bot.modules.modules.keys()): - try: - self.bot.modules.unload_module(name) - except ModuleManager.ModuleWarning: - continue - except Exception as e: - failed.append(name) - continue - load_success, load_fail = self.bot.load_modules(safe=True) - fail.extend(load_fail) - - self.bot.log.info("Reloaded %d modules (%d failed)", - [len(load_success), len(fail)]) + result = self.bot.try_reload_modules() + if result.success: + self.bot.log.info(result.message) + else: + self.bot.log.warn(result.message) -- cgit v1.3.1-10-gc9f91