Skip to content

Commit 311d5fa

Browse files
authored
Add support for {{pwd}} interpolation (#4)
Signed-off-by: cmuraru <[email protected]>
1 parent 7add672 commit 311d5fa

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
cluster:
22
name: ireland1
3+
4+
file: "{{cwd}}/test.txt"

himl/config_generator.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import yaml
1717
from deepmerge import Merger
1818

19-
from .interpolation import InterpolationResolver, InterpolationValidator, SecretResolver
19+
from .interpolation import InterpolationResolver, InterpolationValidator, SecretResolver, DictIterator, replace_parent_working_directory
2020
from .python_compat import iteritems, primitive_types, PY3
2121
from .remote_state import S3TerraformRemoteStateRetriever
2222

@@ -168,6 +168,15 @@ def merge_yamls(values, yaml_content):
168168
else:
169169
values[key] = value
170170

171+
@staticmethod
172+
def resolve_simple_interpolations(data, current_yaml_file):
173+
174+
directory = os.path.dirname(current_yaml_file)
175+
directory = os.path.join(os.getcwd(), directory)
176+
177+
looper = DictIterator()
178+
looper.loop_all_items(data, lambda value: replace_parent_working_directory(value, directory))
179+
171180
def generate_hierarchy(self):
172181
"""
173182
the method will go through the hierarchy of directories and create an ordered list of directories to be used
@@ -189,6 +198,7 @@ def process_hierarchy(self):
189198
for yaml_file in yaml_files:
190199
yaml_content = self.yaml_get_content(yaml_file)
191200
self.merge_yamls(merged_values, yaml_content)
201+
self.resolve_simple_interpolations(merged_values, yaml_file)
192202
self.generated_data = merged_values
193203

194204
def get_values_from_dir_path(self):

himl/interpolation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ def is_full_interpolation(value):
2525
def remove_white_spaces(value):
2626
return re.sub(r"\s+", "", value)
2727

28+
def replace_parent_working_directory(value, cwd):
29+
if "{{cwd}}" in value:
30+
return value.replace("{{cwd}}", cwd)
31+
return value
2832

2933
class InterpolationResolver(object):
3034

0 commit comments

Comments
 (0)