mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
In the process, rename config.proto to config.defaults (because that is what it is now). Also use dict.get('key', default_value) when querying os.environ, rather than an if block, as it is more pythonic/readable/concise, and reduces the number of dict lookups. This change allows aurweb configuration to be done via either: - copying config.defaults to config and modifying values - creating a new config only containing modified values, next to a config.defaults containing unmodified values The motivation for this change is to enable ansible configuration in our flagship deployment by storing only changed values, and deferring to config.defaults otherwise. A side benefit is, it is easier to see what has changed by inspecting only the site configuration file. If a config.defaults file does not exist next to $AUR_CONFIG or in $AUR_CONFIG_DEFAULTS, it is ignored and *all* values are expected to live in the modified config file. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
32 lines
701 B
Python
32 lines
701 B
Python
import configparser
|
|
import os
|
|
|
|
_parser = None
|
|
|
|
|
|
def _get_parser():
|
|
global _parser
|
|
|
|
if not _parser:
|
|
path = os.environ.get('AUR_CONFIG', '/etc/aurweb/config')
|
|
defaults = os.environ.get('AUR_CONFIG_DEFAULTS', path + '.defaults')
|
|
|
|
_parser = configparser.RawConfigParser()
|
|
if os.path.isfile(defaults):
|
|
with open(defaults) as f:
|
|
_parser.read_file(f)
|
|
_parser.read(path)
|
|
|
|
return _parser
|
|
|
|
|
|
def get(section, option):
|
|
return _get_parser().get(section, option)
|
|
|
|
|
|
def getboolean(section, option):
|
|
return _get_parser().getboolean(section, option)
|
|
|
|
|
|
def getint(section, option):
|
|
return _get_parser().getint(section, option)
|