func()

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()
}