Newer
Older
package runner
import (
"fmt"
"os"
"path/filepath"
)
func (c *CmdConfig) populate() {
c.Spec.Charts = FindFiles(c.Layers, c.Spec.Charts)
c.Spec.Ytt = findYtts(c.Layers)
}
// findYtts looks for `ytt` folder and/or `ytt.y[a]ml` file in beaver projects
func findYtts(layers []string) []string {
var result []string
// we cannot use findYaml here because the order matters
for i := len(layers); i != 0; i-- {
layer := layers[i-1]
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
yttDirPath := filepath.Join(layer, "ytt")
yttDirInfo, err := os.Stat(yttDirPath)
if err == nil && yttDirInfo.IsDir() {
result = append(result, yttDirPath)
}
for _, ext := range []string{"yaml", "yml"} {
yttFilePath := filepath.Join(layer, fmt.Sprintf("ytt.%s", ext))
yttFileInfo, err := os.Stat(yttFilePath)
if err == nil && !yttFileInfo.IsDir() {
result = append(result, yttFilePath)
}
}
}
return result
}
func FindFiles(layers []string, charts map[string]CmdChart) map[string]CmdChart {
for name, chart := range charts {
files := findYaml(layers, name)
chart.ValuesFileNames = append(chart.ValuesFileNames, files...)
charts[name] = chart
}
return charts
}
func findYaml(layers []string, name string) []string {
var files []string
for _, layer := range layers {
for _, ext := range []string{"yaml", "yml"} {
fpath := filepath.Join(layer, fmt.Sprintf("%s.%s", name, ext))
if _, err := os.Stat(fpath); err == nil {
files = append(files, fpath)
}
}
}
return files
}