in cmd/create.go [431:522]
func (cc *createCmd) createFiles(detectedLangTempalte *handlers.Template, lowerLang string) error {
// does no further checks without file detection
if cc.dockerfileOnly && cc.deploymentOnly {
return errors.New("can only pass in one of --dockerfile-only and --deployment-only")
}
if cc.skipFileDetection {
if !cc.deploymentOnly {
err := cc.generateDockerfile(detectedLangTempalte, lowerLang)
if err != nil {
return err
}
}
if !cc.dockerfileOnly {
err := cc.generateDeployment()
if err != nil {
return err
}
}
return nil
}
// check if the local directory has dockerfile or charts
hasDockerFile, hasDeploymentFiles, err := filematches.SearchDirectory(cc.dest)
if err != nil {
return err
}
// prompts user for dockerfile re-creation
if hasDockerFile && !cc.deploymentOnly {
if !interactive && !cc.skipFileDetection {
return fmt.Errorf("dockerfile already exists in the directory '%s', use --skip-file-detection to overwrite", cc.dest)
}
selection := &promptui.Select{
Label: "We found Dockerfile in the directory, would you like to recreate the Dockerfile?",
Items: []string{"yes", "no"},
}
_, selectResponse, err := selection.Run()
if err != nil {
return err
}
hasDockerFile = strings.EqualFold(selectResponse, "no")
}
if cc.deploymentOnly {
log.Info("--> --deployment-only=true, skipping Dockerfile creation...")
} else if hasDockerFile {
log.Info("--> Found Dockerfile in local directory, skipping Dockerfile creation...")
} else if !cc.deploymentOnly {
err := cc.generateDockerfile(detectedLangTempalte, lowerLang)
if err != nil {
return err
}
}
// prompts user for deployment re-creation
if hasDeploymentFiles && !cc.dockerfileOnly {
if !interactive && !cc.skipFileDetection {
return fmt.Errorf("deployment files already exist in the directory '%s', use --skip-file-detection to overwrite", cc.dest)
}
selection := &promptui.Select{
Label: "We found deployment files in the directory, would you like to create new deployment files?",
Items: []string{"yes", "no"},
}
_, selectResponse, err := selection.Run()
if err != nil {
return err
}
hasDeploymentFiles = strings.EqualFold(selectResponse, "no")
}
if cc.dockerfileOnly {
log.Info("--> --dockerfile-only=true, skipping deployment file creation...")
} else if hasDeploymentFiles {
log.Info("--> Found deployment directory in local directory, skipping deployment file creation...")
} else if !cc.dockerfileOnly {
err := cc.generateDeployment()
if err != nil {
return err
}
}
log.Info("Draft has successfully created deployment resources for your project 😃")
log.Info("Use 'draft setup-gh' to set up Github OIDC.")
return nil
}