import os from importlib import import_module from importlib.util import module_from_spec, spec_from_file_location from plenum.common.config_util import getConfig as PlenumConfig CONFIG = None def getInstalledConfig(installDir, configFile): configPath = os.path.join(installDir, configFile) if os.path.exists(configPath): spec = spec_from_file_location(configFile, configPath) config = module_from_spec(spec) spec.loader.exec_module(config) return config else: raise FileNotFoundError("No file found at location {}". format(configPath)) def getConfig(homeDir=None): global CONFIG if not CONFIG: plenumConfig = PlenumConfig(homeDir) sovrinConfig = import_module("sovrin.config") refConfig = plenumConfig refConfig.__dict__.update(sovrinConfig.__dict__) try: homeDir = os.path.expanduser(homeDir or "~") configDir = os.path.join(homeDir, ".sovrin") config = getInstalledConfig(configDir, "sovrin_config.py") refConfig.__dict__.update(config.__dict__) except FileNotFoundError: pass refConfig.baseDir = os.path.expanduser(refConfig.baseDir) CONFIG = refConfig return CONFIG