2025-01-10 17:53:57 +00:00
|
|
|
import logging
|
|
|
|
|
2025-01-07 19:14:49 +00:00
|
|
|
import yaml
|
|
|
|
from yaml import Loader
|
|
|
|
|
2025-01-07 19:30:09 +00:00
|
|
|
from grimoiressg.modules import available_modules, load_external_module
|
2025-01-10 17:53:57 +00:00
|
|
|
from grimoiressg.utils import logger
|
2025-01-07 19:14:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
def default_config():
|
|
|
|
return {
|
|
|
|
"enabled_modules": [
|
|
|
|
"tags",
|
|
|
|
"markdown",
|
|
|
|
"templating"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def read_config(context):
|
|
|
|
config_file = context.get("config_file", None)
|
|
|
|
|
|
|
|
if not config_file:
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.info("No config file given; using default config")
|
2025-01-07 19:14:49 +00:00
|
|
|
config = default_config()
|
|
|
|
else:
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.info("Loading config file...")
|
2025-01-07 19:14:49 +00:00
|
|
|
with open(config_file, "r") as file:
|
|
|
|
config = yaml.load(file, Loader) or {}
|
|
|
|
|
2025-01-07 19:30:09 +00:00
|
|
|
for module in config.get("load_modules", []):
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.debug(" Loading external module %s", module)
|
2025-01-07 19:30:09 +00:00
|
|
|
load_external_module(module)
|
|
|
|
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.debug("Enabled modules:")
|
2025-01-07 19:14:49 +00:00
|
|
|
for module in config.get("enabled_modules", []):
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.debug(" - %s", module)
|
2025-01-07 19:14:49 +00:00
|
|
|
if module not in available_modules:
|
2025-01-10 17:53:57 +00:00
|
|
|
logger.critical("Module does not exist: %s", module)
|
|
|
|
logging.shutdown()
|
2025-01-07 19:14:49 +00:00
|
|
|
exit(1)
|
|
|
|
|
|
|
|
return config
|