package deploy import ( "embed" _ "embed" "os" "github.com/fatih/color" "git.icechen.cn/pkg/wdt/util" ) //go:embed "*" var deployDir embed.FS func GenDeploy(namespace string, name string, aliasName string) error { color.Green("正在生成deploy...") // deploy 文件夹 deployDirPath := "app/api/" + name + "/deploy" err := os.MkdirAll(deployDirPath, os.ModePerm) if err != nil { return err } // value.yaml valuesTemplate, err := deployDir.ReadFile("values.tpl") if err != nil { return err } err = util.TemplateToFile(deployDirPath+"/values.yaml", string(valuesTemplate), map[string]string{"NameSpace": namespace, "AppName": name, "AliasName": aliasName}) if err != nil { return err } // Chart.yaml chartTemplate, err := deployDir.ReadFile("Chart.tpl") if err != nil { return err } err = util.TemplateToFile(deployDirPath+"/Chart.yaml", string(chartTemplate), map[string]string{"NameSpace": namespace, "AppName": name, "AliasName": aliasName}) if err != nil { return err } // templates 文件夹 templatesDirPath := "app/api/" + name + "/deploy/templates" err = os.MkdirAll(templatesDirPath, os.ModePerm) if err != nil { return err } // .helmignore 文件 err = copyTo(".helmignore", deployDirPath+"/.helmignore") if err != nil { return err } // _helpers.tpl 文件 err = copyTo("templates/helpers.tpl", templatesDirPath+"/_helpers.tpl") if err != nil { return err } // deployment.yaml 文件 err = copyTo("templates/deployment.yaml", templatesDirPath+"/deployment.yaml") if err != nil { return err } // ingress.yaml 文件 err = copyTo("templates/ingress.yaml", templatesDirPath+"/ingress.yaml") if err != nil { return err } // NOTES.txt 文件 err = copyTo("templates/NOTES.txt", templatesDirPath+"/NOTES.txt") if err != nil { return err } // service.yaml 文件 err = copyTo("templates/service.yaml", templatesDirPath+"/service.yaml") if err != nil { return err } return nil } func copyTo(fileName string, toPath string) error { fileContent, err := deployDir.ReadFile(fileName) if err != nil { return err } toFile, err := os.OpenFile(toPath, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, os.ModePerm) if err != nil { return err } defer toFile.Close() _, err = toFile.Write(fileContent) return err }