in cmd/create.go [338:429]
func (cc *createCmd) generateDeployment() error {
log.Info("--- Deployment File Creation ---")
var deployType string
var deployTemplate *handlers.Template
var err error
if !interactive {
if cc.createConfig.DeployType == "" {
cc.createConfig.DeployType = "manifests"
log.Debugf("using default deployment type %s", cc.createConfig.DeployType)
}
}
if cc.createConfig.DeployType != "" {
deployType = strings.ToLower(cc.createConfig.DeployType)
deployTemplate, err = handlers.GetTemplate(fmt.Sprintf("deployment-%s", deployType), "", cc.dest, cc.templateWriter)
if err != nil {
return err
}
if deployTemplate == nil || deployTemplate.Config == nil {
return errors.New("invalid deployment type")
}
deployTemplate.Config.VariableMapToDraftConfig(flagVariablesMap)
if !interactive {
currentDir, err := os.Getwd()
if err != nil {
return fmt.Errorf("getting current directory: %w", err)
}
defaultAppName := fmt.Sprintf("%s-workflow", filepath.Base(currentDir))
if validName, err := ToValidAppName(defaultAppName); err != nil {
log.Debugf("unable to convert default app name %q to a valid name: %v", defaultAppName, err)
log.Debugf("using default app name %q", "my-app")
defaultAppName = "my-app"
} else {
defaultAppName = validName
}
appVar, err := deployTemplate.Config.GetVariable("APPNAME")
if err != nil || appVar == nil {
log.Debugf("unable to get APP_NAME variable: %v", err)
}
if err == nil {
appVar.Default.Value = defaultAppName
}
deployTemplate.Config.ApplyDefaultVariables()
}
err = validateConfigInputsToPrompts(deployTemplate.Config, cc.createConfig.DeployVariables)
if err != nil {
return err
}
} else {
if cc.deployType == "" {
selection := &promptui.Select{
Label: "Select k8s Deployment Type",
Items: []string{"manifests", "kustomize", "helm"},
}
_, deployType, err = selection.Run()
if err != nil {
return err
}
} else {
deployType = cc.deployType
}
deployTemplate, err = handlers.GetTemplate(fmt.Sprintf("deployment-%s", deployType), "", cc.dest, cc.templateWriter)
if err != nil {
return err
}
if deployTemplate == nil || deployTemplate.Config == nil {
return errors.New("invalid deployment type")
}
deployTemplate.Config.VariableMapToDraftConfig(flagVariablesMap)
err = prompts.RunPromptsFromConfigWithSkips(deployTemplate.Config)
if err != nil {
return err
}
}
if cc.templateVariableRecorder != nil {
for _, variable := range deployTemplate.Config.Variables {
cc.templateVariableRecorder.Record(variable.Name, variable.Value)
}
}
log.Infof("--> Creating %s Kubernetes resources...\n", deployType)
return deployTemplate.Generate()
}