diff --git a/runner/cmd.go b/runner/cmd.go index d82bb7691b85e21bfc54cfad3fa955489e0b0985_cnVubmVyL2NtZC5nbw==..b62feafa9d3d1a92687449f12f42c2129b25ffee_cnVubmVyL2NtZC5nbw== 100644 --- a/runner/cmd.go +++ b/runner/cmd.go @@ -13,7 +13,8 @@ func RunCMD(name string, args ...string) (err error, stdout, stderr []string) { // helm template -f base.yaml -f base.values.yaml -f ns.yaml -f ns.values.yaml - // ytt -f /chart-folder -f base.yaml -f ns.yaml -v ... -v ... + // ytt -f $chartsTmpFile --file-mark "$(basename $chartsTmpFile):type=yaml-plain"\ + // -f base/ytt/ -f base/ytt.yml -f ns1/ytt/ -f ns1/ytt.yml c := cmd.NewCmd(name, args...) statusChan := c.Start() status := <-statusChan @@ -134,9 +135,18 @@ return charts } -func (c *CmdChart) hydrateFiles(dirName string, variables map[string]string) ([]string, error) { - var hydratedFiles []string - for _, file := range c.ValuesFileNames { - if tmpl, err := template.New(filepath.Base(file)).ParseFiles(file); err != nil { +func hydrateFiles(dirName string, variables map[string]string, paths []string) ([]string, error) { + var result []string + for _, path := range paths { + fileInfo, err := os.Stat(path) + if err != nil { + return nil, err + } + if fileInfo.IsDir() { + result = append(result, path) + continue + } + + if tmpl, err := template.New(filepath.Base(path)).ParseFiles(path); err != nil { return nil, err } else { @@ -141,6 +151,6 @@ return nil, err } else { - if tmpFile, err := ioutil.TempFile(dirName, fmt.Sprintf("%s-", filepath.Base(file))); err != nil { + if tmpFile, err := ioutil.TempFile(dirName, fmt.Sprintf("%s-", filepath.Base(path))); err != nil { return nil, fmt.Errorf("hydrateFiles failed to create tempfile: %w", err) } else { defer func() { @@ -149,7 +159,7 @@ if err := tmpl.Execute(tmpFile, variables); err != nil { return nil, fmt.Errorf("hydrateFiles failed to execute template: %w", err) } - hydratedFiles = append(hydratedFiles, tmpFile.Name()) + result = append(result, tmpFile.Name()) } } } @@ -153,10 +163,10 @@ } } } - return hydratedFiles, nil + return result, nil } func (c *CmdConfig) hydrateFiles(dirName string) error { variables := c.prepareVariables(c.Spec.Variables) for key, chart := range c.Spec.Charts { @@ -157,9 +167,9 @@ } func (c *CmdConfig) hydrateFiles(dirName string) error { variables := c.prepareVariables(c.Spec.Variables) for key, chart := range c.Spec.Charts { - if files, err := chart.hydrateFiles(dirName, variables); err != nil { + if paths, err := hydrateFiles(dirName, variables, chart.ValuesFileNames); err != nil { return err } else { @@ -164,6 +174,6 @@ return err } else { - chart.ValuesFileNames = files + chart.ValuesFileNames = paths c.Spec.Charts[key] = chart } }