diff --git a/bopytex/service.py b/bopytex/service.py index b7243ba..808c5a1 100755 --- a/bopytex/service.py +++ b/bopytex/service.py @@ -6,6 +6,7 @@ Producing then compiling templates """ import importlib.util +import os from pathlib import Path from bopytex.scheduler import Scheduler from bopytex import default_config @@ -51,18 +52,27 @@ def clean_vars_keys( return new_dict -def get_config(options: dict) -> dict: - """ Look for options["configfile"] to load it with default_config and options """ - try: - options["configfile"] - except KeyError: - local_config = {} +def config_from_file(filename: str) -> dict: + if Path(filename).exists(): + local_config = vars(load_module(filename)) + return clean_vars_keys(local_config) else: - if Path(options["configfile"]).exists(): - local_config = vars(load_module(options["configfile"])) - local_config = clean_vars_keys(local_config) - else: - local_config = {} + return {} + + +def build_config(options: dict) -> dict: + """Look for options["configfile"] to load it with default_config and options""" + configfile = "" + try: + configfile = options["configfile"] + except KeyError: + pass + try: + configfile = os.environ["BOPYTEXCONFIG"] + except KeyError: + pass + + local_config = config_from_file(configfile) config = clean_vars_keys(vars(default_config)) config.update(local_config) @@ -72,7 +82,7 @@ def get_config(options: dict) -> dict: def main(**options): - config = get_config(options) + config = build_config(options) orcherstre = orcherstrator( config, planner=default_config.planner, dispatcher=default_config.dispatcher diff --git a/test/test_service.py b/test/test_service.py index a495180..fc1bc1d 100644 --- a/test/test_service.py +++ b/test/test_service.py @@ -2,7 +2,7 @@ import os import pytest from bopytex.planner import fake_planner -from bopytex.service import get_config, orcherstrator +from bopytex.service import build_config, orcherstrator from bopytex.tasks import Task from bopytex.worker import Dispatcher from .fakes.workers import fake_worker @@ -40,7 +40,7 @@ jinja2 = { def test_get_config_with_configfile(config_file, tmp_path): os.chdir(tmp_path) - config = get_config({"from_option": "config", "configfile": str(config_file)}) + config = build_config({"from_option": "config", "configfile": str(config_file)}) assert type(config) == dict assert set(config.keys()) == { "generate",