Skip to content
This repository has been archived by the owner on Oct 8, 2020. It is now read-only.

Render filenames when using template_dir #62

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
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
8 changes: 7 additions & 1 deletion template/resource_template_dir.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,13 @@ func resourceTemplateDirCreate(d *schema.ResourceData, meta interface{}) error {
return nil
}

relPath, _ := filepath.Rel(sourceDir, p)
// Render destination filename
pRendered, err := execute(p, vars)
if err != nil {
return templateRenderError(fmt.Errorf("failed to render filename %v: %v", p, err))
}

relPath, _ := filepath.Rel(sourceDir, pRendered)
return generateDirFile(p, path.Join(destinationDir, relPath), f, vars)
})
if err != nil {
Expand Down
12 changes: 7 additions & 5 deletions template/resource_template_dir_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ resource "template_dir" "dir" {
}`

type testTemplate struct {
filename string
template string
want string
}
Expand Down Expand Up @@ -55,9 +56,10 @@ func TestTemplateDirRendering(t *testing.T) {
}{
{
files: map[string]testTemplate{
"foo.txt": {"${bar}", "bar"},
"nested/monkey.txt": {"ooh-ooh-ooh-eee-eee", "ooh-ooh-ooh-eee-eee"},
"maths.txt": {"${1+2+3}", "6"},
"${bar}.txt": {"bar.txt", "foo ${bar}", "foo bar"},
"foo.txt": {"foo.txt", "${bar}", "bar"},
"nested/monkey.txt": {"nested/monkey.txt", "ooh-ooh-ooh-eee-eee", "ooh-ooh-ooh-eee-eee"},
"maths.txt": {"maths.txt", "${1+2+3}", "6"},
},
vars: `{bar = "bar"}`,
},
Expand All @@ -80,8 +82,8 @@ func TestTemplateDirRendering(t *testing.T) {
{
Config: fmt.Sprintf(templateDirRenderingConfig, in, out, tt.vars),
Check: func(s *terraform.State) error {
for name, file := range tt.files {
content, err := ioutil.ReadFile(filepath.Join(out, name))
for _, file := range tt.files {
content, err := ioutil.ReadFile(filepath.Join(out, file.filename))
if err != nil {
return fmt.Errorf("template:\n%s\nvars:\n%s\ngot:\n%s\nwant:\n%s\n", file.template, tt.vars, err, file.want)
}
Expand Down