Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions compose/config/interpolation.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def process_item(name, config_dict):

def interpolate_value(name, config_key, value, section, interpolator):
try:
return recursive_interpolate(value, interpolator)
return recursive_interpolate(config_key, value, interpolator)
except InvalidInterpolation as e:
raise ConfigurationError(
'Invalid interpolation format for "{config_key}" option '
Expand All @@ -58,16 +58,20 @@ def interpolate_value(name, config_key, value, section, interpolator):
string=e.string))


def recursive_interpolate(obj, interpolator):
def recursive_interpolate(config_key, obj, interpolator):
if isinstance(obj, six.string_types):
if config_key == "privileged" and interpolator.interpolate(obj).lower() == 'true':
return True
elif config_key == "privileged" and interpolator.interpolate(obj).lower() == 'false':
return False
return interpolator.interpolate(obj)
if isinstance(obj, dict):
return dict(
(key, recursive_interpolate(val, interpolator))
(key, recursive_interpolate('', val, interpolator))
for (key, val) in obj.items()
)
if isinstance(obj, list):
return [recursive_interpolate(val, interpolator) for val in obj]
return [recursive_interpolate('', val, interpolator) for val in obj]
return obj


Expand Down