From 7ad0d3eb409b54cbb52a3ae7fd7491d3c5afe651 Mon Sep 17 00:00:00 2001 From: sigmasternchen Date: Tue, 7 Jan 2025 20:30:09 +0100 Subject: [PATCH] feat: Allow loading of external modules --- example/config.yml | 8 ++++++++ external_module_test/__init__.py | 8 ++++++++ grimoiressg/config.py | 8 +++++++- grimoiressg/modules/__init__.py | 4 ++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 example/config.yml create mode 100644 external_module_test/__init__.py diff --git a/example/config.yml b/example/config.yml new file mode 100644 index 0000000..9a65a5b --- /dev/null +++ b/example/config.yml @@ -0,0 +1,8 @@ +load_modules: + - external_module_test + +enabled_modules: + - tags + - markdown + - templating + - test \ No newline at end of file diff --git a/external_module_test/__init__.py b/external_module_test/__init__.py new file mode 100644 index 0000000..39d0ccc --- /dev/null +++ b/external_module_test/__init__.py @@ -0,0 +1,8 @@ +from grimoiressg.modules import available_modules + + +def test(data, context): + print("This is test module.") + + +available_modules["test"] = test diff --git a/grimoiressg/config.py b/grimoiressg/config.py index ada4269..512fade 100644 --- a/grimoiressg/config.py +++ b/grimoiressg/config.py @@ -1,7 +1,7 @@ import yaml from yaml import Loader -from grimoiressg.modules import available_modules +from grimoiressg.modules import available_modules, load_external_module def default_config(): @@ -21,9 +21,15 @@ def read_config(context): print("No config file given; using default config") config = default_config() else: + print("Loading config file...") with open(config_file, "r") as file: config = yaml.load(file, Loader) or {} + for module in config.get("load_modules", []): + print(f" Loading external module {module}") + load_external_module(module) + print() + print("Enabled modules:") for module in config.get("enabled_modules", []): print(f" - {module}") diff --git a/grimoiressg/modules/__init__.py b/grimoiressg/modules/__init__.py index 1240793..133e55f 100644 --- a/grimoiressg/modules/__init__.py +++ b/grimoiressg/modules/__init__.py @@ -7,3 +7,7 @@ available_modules = { "markdown": compile_markdown, "templating": render_templates } + + +def load_external_module(module): + __import__(module)