in internal/cmd/generate.go [57:105]
func Generate(startPath string, environments []string, validate bool) (components []core.Component, err error) {
// Iterate through component tree and generate
rootInit := func(startPath string, environments []string, c core.Component) (component core.Component, err error) {
return c.UpdateComponentPath(startPath, environments)
}
results := core.WalkComponentTree(startPath, environments, func(path string, component *core.Component) (err error) {
var generator core.Generator
switch component.ComponentType {
case "helm":
generator = &generators.HelmGenerator{}
case "static":
generator = &generators.StaticGenerator{}
}
return component.Generate(generator)
}, rootInit)
components, err = core.SynchronizeWalkResult(results)
if err != nil {
return nil, err
}
environmentName := strings.Join(environments, "-")
if len(environmentName) == 0 {
environmentName = "common"
}
generationPath := path.Join(startPath, "generated", environmentName)
if err = writeGeneratedManifests(generationPath, components); err != nil {
return nil, err
}
if validate {
if err = validateGeneratedManifests(generationPath); err != nil {
return nil, err
}
}
if err == nil {
logger.Info(emoji.Sprintf(":raised_hands: Finished generate"))
}
return components, err
}