Skip to content

Commit

Permalink
Replace variables-modules-merge.tf for json
Browse files Browse the repository at this point in the history
  • Loading branch information
caruccio committed Dec 13, 2022
1 parent 5b31b32 commit 8d220d1
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 25 deletions.
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import:
$(foreach i,$(filter https://% http://%, $(IMPORT_SOURCES)),curl -sLO $(i);)
$(foreach i,$(filter-out https://% http://%, $(IMPORT_SOURCES)),cp -f $(i) ./;)

modules: variables-modules-merge.tf
variables-modules-merge.tf: variables-modules.tf
modules: variables-modules-merge.tf.json
variables-modules-merge.tf.json: variables-modules.tf
./make-modules $< > $@

test: modules fmt lint init validate
Expand Down
34 changes: 18 additions & 16 deletions make-modules
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,25 @@ from hcl2.parser import hcl2
display_path = '<stdin>' if len(sys.argv) < 2 else sys.argv[1]
path = sys.stdin if len(sys.argv) < 2 else open(sys.argv[1], 'r')
data = hcl2.parse(path.read())
indent = 2
locals_block = {
'//': ['This file was auto-generated by command:', f'$ {sys.argv[0]} {display_path}']
}

print('''
## This file is auto-generated by command:
## $ %s %s
locals {
modules = {'''.strip() % (sys.argv[0], display_path))
def update(d, parents=[]):
for k, v in d.items():
if isinstance(v, dict):
d[k] = update(d[k], parents + [k])
else:
path = '.'.join(parents + [k])
d[k] = f'${{try(var.modules.{path}, var.modules_defaults.{path})}}'
return d

for variables in data['variable']:
for name, value in variables.items():
if name != 'modules_defaults':
for var_name, var_value in variables.items():
if var_name != 'modules_defaults':
continue
for var_default_name, var_default_value in value['default'].items():
print(f' {var_default_name} = {{')
for var_default_value_item_name in var_default_value:
module_item = f'{var_default_name}.{var_default_value_item_name}'
print(f' {var_default_value_item_name} = try(var.modules.{module_item}, var.modules_defaults.{module_item})')
print(' }')
print(' }')
print('}')
default = var_value['default']
locals_block['locals'] = { 'modules': update(default) }

print(json.dumps(locals_block,indent=indent))
7 changes: 0 additions & 7 deletions variables-modules-merge.tf

This file was deleted.

9 changes: 9 additions & 0 deletions variables-modules-merge.tf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"//": [
"This file was auto-generated by command:",
"$ ./make-modules variables-modules.tf"
],
"locals": {
"modules": {}
}
}

0 comments on commit 8d220d1

Please sign in to comment.