From dc40738a709fe3d2b917cf4c7980ea119edf983b Mon Sep 17 00:00:00 2001 From: David Trattnig <david.trattnig@o94.at> Date: Thu, 27 Feb 2020 20:09:38 +0100 Subject: [PATCH] Automatic config detection for production-envs. --- aura.py | 13 ++++++------- guru.py | 4 ++-- libraries/base/config.py | 24 +++++++++++++++++++++++- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/aura.py b/aura.py index edb01ad6..9387d7cc 100755 --- a/aura.py +++ b/aura.py @@ -42,12 +42,11 @@ from libraries.base.logger import AuraLogger from libraries.base.config import AuraConfig -def get_config_file(): - if len(sys.argv) >= 3 and "--config-file" in sys.argv: - idx = sys.argv.index("--config-file") - return sys.argv[idx + 1] - else: - return "%s/configuration/engine.ini" % Path(__file__).parent.absolute() +# def get_config_file(): +# if len(sys.argv) >= 3 and "--config-file" in sys.argv: +# idx = sys.argv.index("--config-file") +# return sys.argv[idx + 1] + def get_database_uri(): db_name = config.get("db_name") @@ -64,7 +63,7 @@ def configure_flask(): app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False -config = AuraConfig(get_config_file()) +config = AuraConfig() app = Flask(__name__, template_folder=config.get("install_dir") + "/modules/web/templates") configure_flask() DB = SQLAlchemy(app) diff --git a/guru.py b/guru.py index b86fdfdf..fc01643b 100755 --- a/guru.py +++ b/guru.py @@ -41,8 +41,8 @@ class Guru(): """ Command Line Interface (CLI) for Aura Engine. """ - config_path = "%s/configuration/engine.ini" % Path(__file__).parent.absolute() - config = AuraConfig(config_path) + # config_path = "%s/configuration/engine.ini" % Path(__file__).parent.absolute() + config = AuraConfig() parser = None args = None diff --git a/libraries/base/config.py b/libraries/base/config.py index c2f75319..8432558b 100644 --- a/libraries/base/config.py +++ b/libraries/base/config.py @@ -23,21 +23,43 @@ # import os +import os.path import sys import logging +from pathlib import Path from configparser import ConfigParser class AuraConfig: + """ + AuraConfig Class + + Holds the Aura Configuration as in the file `engine.ini`. + """ ini_path = "" logger = None - def __init__(self, ini_path): # = "/etc/aura/engine.ini"): + + def __init__(self, ini_path="/etc/aura/engine.ini"): + """ + Initializes the configuration, defaults to `/etc/aura/engine.ini`. + If this file doesn't exist it uses `./configuration/engine.ini` from + the project directory. + + Args: + ini_path(String): The path to the configuration file `engine.ini` + """ + config_file = Path(ini_path) + if not config_file.is_file(): + ini_path = "%s/configuration/engine.ini" % Path(__file__).parent.parent.parent.absolute() + self.ini_path = ini_path self.logger = logging.getLogger("AuraEngine") self.load_config() + + def set(self, key, value): """ Set a property -- GitLab