What do you think about adding one more line to check if $config is already set? Something like: if (!isset($config)) { ... do the parse_ini_file } Just to reduce disk operations. On Thu, Apr 12, 2018 at 10:44 AM, Eli Schwartz <eschwartz@archlinux.org> wrote:
This change allows aurweb configuration to be done via either: - copying config.proto to config and modifying values - creating a new config only containing modified values, next to a config.proto containing unmodified values
The motivation for this change is to enable ansible configuration by storing only changed values, and deferring to config.proto otherwise.
If a config.proto file does not exist next to /etc/aurweb/config or $AUR_CONFIG, it is ignored and *all* values are expected to live in the modified config file.
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- aurweb/config.py | 4 ++++ web/lib/confparser.inc.php | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/aurweb/config.py b/aurweb/config.py index a52d942..c333c43 100644 --- a/aurweb/config.py +++ b/aurweb/config.py @@ -13,6 +13,10 @@ def _get_parser(): path = os.environ.get('AUR_CONFIG') else: path = "/etc/aurweb/config" + + if os.path.isfile(path + '.proto'): + with open(path + '.proto') as f: + _parser.read_file(f) _parser.read(path)
return _parser diff --git a/web/lib/confparser.inc.php b/web/lib/confparser.inc.php index 499481d..2ed0108 100644 --- a/web/lib/confparser.inc.php +++ b/web/lib/confparser.inc.php @@ -8,11 +8,17 @@ function config_load() { if (!$path) { $path = "/etc/aurweb/config"; } + if (file_exists($path . ".proto")) { + $defaults = parse_ini_file($path . ".proto", true, INI_SCANNER_RAW); + } else { + $defaults = []; + } if (file_exists($path)) { - $AUR_CONFIG = parse_ini_file($path, true, INI_SCANNER_RAW); + $config = parse_ini_file($path, true, INI_SCANNER_RAW); } else { die("aurweb config file not found"); } + $AUR_CONFIG = array_replace_recursive($defaults, $config) } }
-- 2.17.0