Skip to content

Commit

Permalink
Add conf.d config-loading
Browse files Browse the repository at this point in the history
Wherever a config_file.{py|json} would be loaded, also load any/all config in config_file.d/*.{py|json}.
  • Loading branch information
minrk committed Jun 10, 2016
1 parent d502d37 commit 45a190e
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions traitlets/config/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -535,13 +535,25 @@ def _load_config_files(cls, basefilename, path=None, log=None, raise_config_file
if not isinstance(path, list):
path = [path]
for path in path[::-1]:
# path list is in descending priority order, so load files backwards:
pyloader = cls.python_config_loader_class(basefilename+'.py', path=path, log=log)
if log:
log.debug("Looking for %s in %s", basefilename, path)
jsonloader = cls.json_config_loader_class(basefilename+'.json', path=path, log=log)
# path list is in descending priority order, so load files backwards:
def new_loader(name, path):
if name.endswith('.py'):
return cls.python_config_loader_class(name, path=path, log=log)
elif name.endswith('.json'):
return cls.json_config_loader_class(name, path=path, log=log)
pyloader = new_loader(basefilename + '.py', path=path)
jsonloader = new_loader(basefilename + '.json', path=path)
loaders = [pyloader, jsonloader]
# load conf.d/config files in lorder
conf_d = os.path.join(path, basefilename + '.d')
if os.path.isdir(conf_d):
for filename in sorted(os.listdir(conf_d)):
if filename.endswith(('.py', '.json')):
loaders.append(new_loader(filename, path=conf_d))
config = None
for loader in [pyloader, jsonloader]:
for loader in loaders:
try:
config = loader.load_config()
except ConfigFileNotFound:
Expand Down

0 comments on commit 45a190e

Please sign in to comment.