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)