[System] config now deep update when multiple config files are used
This commit is contained in:
parent
f60c06bc17
commit
9455920141
|
@ -1,24 +1,37 @@
|
|||
import logging.config
|
||||
import os
|
||||
import toml
|
||||
import logging.config
|
||||
import collections.abc
|
||||
|
||||
from pathlib import Path
|
||||
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||
from flaschengeist import _module_path, logger
|
||||
|
||||
|
||||
def __update(d, u):
|
||||
for k, v in u.items():
|
||||
if isinstance(v, collections.abc.Mapping):
|
||||
d[k] = __update(d.get(k, {}), v)
|
||||
else:
|
||||
d[k] = v
|
||||
return d
|
||||
|
||||
|
||||
# Default config:
|
||||
config = {}
|
||||
paths = [_module_path, Path.home() / ".config"]
|
||||
|
||||
__paths = [_module_path, Path.home() / ".config"]
|
||||
if "FLASCHENGEIST_CONF" in os.environ:
|
||||
paths.append(Path(os.environ.get("FLASCHENGEIST_CONF")))
|
||||
for loc in paths:
|
||||
__paths.append(Path(os.environ.get("FLASCHENGEIST_CONF")))
|
||||
for loc in __paths:
|
||||
try:
|
||||
with (loc / "flaschengeist.toml").open() as source:
|
||||
logger.info("Reading config file from >{}<".format(loc))
|
||||
config.update(toml.load(source))
|
||||
__update(config, toml.load(source))
|
||||
except IOError:
|
||||
pass
|
||||
# Always enable this builtin plugins!
|
||||
config.update({"auth": {"enabled": True}, "roles": {"enabled": True}, "users": {"enabled": True}})
|
||||
__update(config, {"auth": {"enabled": True}, "roles": {"enabled": True}, "users": {"enabled": True}})
|
||||
|
||||
|
||||
def configure_app(app):
|
||||
|
|
Loading…
Reference in New Issue