aboutsummaryrefslogtreecommitdiff
path: root/src/IRCBot.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-10-14 12:55:32 +0100
committerGravatar jesopo2019-10-14 12:56:04 +0100
commita9111c724148634486524f3744c3bbe039f3cc1d (patch)
treeaaffef8d9b6923a921c0406ca63c28ccb5b35f20 /src/IRCBot.py
parentrefactor out chosing loadable modules in to _list_valid_modules() (diff)
signature
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
Diffstat (limited to 'src/IRCBot.py')
-rw-r--r--src/IRCBot.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py
index 8eb1873e..fbc74ad9 100644
--- a/src/IRCBot.py
+++ b/src/IRCBot.py
@@ -149,22 +149,27 @@ class Bot(object):
if throw:
raise BitBotPanic()
- def load_modules(self, safe: bool=False
- ) -> typing.Tuple[typing.List[str], typing.List[str]]:
- db_blacklist = set(self.get_setting("module-blacklist", []))
+ def _module_lists(self):
db_whitelist = set(self.get_setting("module-whitelist", []))
+ db_blacklist = set(self.get_setting("module-blacklist", []))
- conf_blacklist = self.config.get("module-blacklist", "").split(",")
conf_whitelist = self.config.get("module-whitelist", "").split(",")
+ conf_blacklist = self.config.get("module-blacklist", "").split(",")
- conf_blacklist = set(filter(None, conf_blacklist))
conf_whitelist = set(filter(None, conf_whitelist))
+ conf_blacklist = set(filter(None, conf_blacklist))
- blacklist = db_blacklist|conf_blacklist
- whitelist = db_whitelist|conf_whitelist
+ return (db_whitelist|conf_whitelist, db_blacklist|conf_blacklist)
+ def load_modules(self, safe: bool=False
+ ) -> typing.Tuple[typing.List[str], typing.List[str]]:
+ whitelist, blacklist = self._module_lists()
return self.modules.load_modules(self, whitelist=whitelist,
blacklist=blacklist, safe=safe)
+ def try_reload_modules(self) -> ModuleManager.TryReloadResult:
+ whitelist, blacklist = self._module_lists()
+ return self.modules.try_reload_modules(self, whitelist=whitelist,
+ blacklist=blacklist)
def add_server(self, server_id: int, connect: bool = True,
connection_param_args: typing.Dict[str, str]={}