Support for include directive in config.yaml, #32
This commit is contained in:
parent
d6807bd85b
commit
7963b5e11f
1 changed files with 23 additions and 7 deletions
|
@ -46,13 +46,8 @@ class Config(object):
|
||||||
raise RuntimeError('No config file specified and nothing found in {}'
|
raise RuntimeError('No config file specified and nothing found in {}'
|
||||||
.format(self._cfgfile_locations))
|
.format(self._cfgfile_locations))
|
||||||
|
|
||||||
with open(cfgfile, 'r') as fp:
|
self._cfgfile = cfgfile
|
||||||
self._config = yaml.load(fp)
|
self._config = self._read_config_file(self._cfgfile)
|
||||||
|
|
||||||
for section in self._config:
|
|
||||||
if 'disabled' in self._config[section] \
|
|
||||||
and self._config[section]['disabled']:
|
|
||||||
del self._config[section]
|
|
||||||
|
|
||||||
if 'logging' not in self._config:
|
if 'logging' not in self._config:
|
||||||
self._config['logging'] = logging.INFO
|
self._config['logging'] = logging.INFO
|
||||||
|
@ -69,6 +64,27 @@ class Config(object):
|
||||||
self._init_components()
|
self._init_components()
|
||||||
|
|
||||||
|
|
||||||
|
def _read_config_file(self, cfgfile):
|
||||||
|
if not os.path.isabs(cfgfile):
|
||||||
|
cfgfile = os.path.join(os.path.dirname(self._cfgfile), cfgfile)
|
||||||
|
|
||||||
|
config = {}
|
||||||
|
with open(cfgfile, 'r') as fp:
|
||||||
|
file_config = yaml.load(fp)
|
||||||
|
|
||||||
|
for section in file_config:
|
||||||
|
if section == 'include':
|
||||||
|
included_config = self._read_config_file(file_config[section])
|
||||||
|
|
||||||
|
for incl_section in included_config.keys():
|
||||||
|
config[incl_section] = included_config[incl_section]
|
||||||
|
elif 'disabled' not in file_config[section] \
|
||||||
|
or file_config[section]['disabled'] is False:
|
||||||
|
config[section] = file_config[section]
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
|
|
||||||
def _init_components(self):
|
def _init_components(self):
|
||||||
for key in self._config.keys():
|
for key in self._config.keys():
|
||||||
if key.startswith('backend.'):
|
if key.startswith('backend.'):
|
||||||
|
|
Loading…
Reference in a new issue