Support monolithic configs

This commit is contained in:
dave 2017-04-30 23:27:40 -07:00
parent cc4e3fee72
commit ee71fe69d2
2 changed files with 17 additions and 5 deletions

View File

@ -45,7 +45,8 @@ Instance Configuration
"modules":[
"PingResponder",
"Services"
]
],
"module_configs": {}
}
In the example directory, this is stored in `config.json`. This may be
@ -102,3 +103,9 @@ options:
A list of modules to load. Modules are loaded in the order they are listed
here. :doc:`PingResponder </api/modules/pingresponder>` and :doc:`Services </api/modules/services>` are the *bare minimum* needed to open and
maintain and IRC connection.
.. cmdoption:: module_configs
A dictionary mapping module names to module configs. If you prefer a monolithic config file instead of a json config
file per module, this can be populated with the same data as the separate config files. Entries here will be
preferred over separate config files.

View File

@ -45,10 +45,15 @@ class ModuleBase:
self.log.info("Loaded module %s" % self.moduleName)
def loadConfig(self):
"""Loads this module's config into self.config"""
configPath = self.getConfigPath()
if configPath is not None:
self.config = PyIRCBot.load(configPath)
"""
Loads this module's config into self.config. The bot's main config is checked for a section matching the module
name, which will be preferred. If not found, an individual config file will be loaded from the data dir
"""
self.config = self.bot.botconfig.get("module_configs", {}).get(self.__class__.__name__, {})
if not self.config:
configPath = self.getConfigPath()
if configPath is not None:
self.config = PyIRCBot.load(configPath)
def ondisable(self):
"""Called when the module should be disabled. Your module should do any sort