config: Normalize paths in config relative to provided parent directory

This sets things up to support normalizing paths relative to parent
directories specified by callers who have more context for determining
what paths should be relative to.
This commit is contained in:
Eric N. Vander Weele 2020-05-18 16:30:05 -04:00
parent c8494e7ac0
commit 8be5a7294b

View file

@ -184,9 +184,12 @@ class MergedConfigParser(object):
#: Our instance of our :class:`~ConfigFileFinder`
self.config_finder = config_finder
def _normalize_value(self, option, value):
def _normalize_value(self, option, value, parent=None):
if parent is None:
parent = self.config_finder.local_directory
final_value = option.normalize(
value, self.config_finder.local_directory
value, parent
)
LOG.debug(
'%r has been normalized to %r for option "%s"',
@ -196,7 +199,7 @@ class MergedConfigParser(object):
)
return final_value
def _parse_config(self, config_parser):
def _parse_config(self, config_parser, parent=None):
config_dict = {}
for option_name in config_parser.options(self.program_name):
if option_name not in self.config_options:
@ -216,7 +219,7 @@ class MergedConfigParser(object):
value = method(self.program_name, option_name)
LOG.debug('Option "%s" returned value: %r', option_name, value)
final_value = self._normalize_value(option, value)
final_value = self._normalize_value(option, value, parent)
config_dict[option.config_name] = final_value
return config_dict