package templates import ( "bytes" "embed" "kube-forge/internal/config" "kube-forge/internal/logging" "kube-forge/internal/resources" "os" "path/filepath" "text/template" ) func executeTemplateToString(template *template.Template, config *config.Config) string { templateResult := &bytes.Buffer{} err := template.Execute(templateResult, config) if err != nil { logging.Log.Fatal(err) } templateResultString := templateResult.String() return templateResultString } func getTemplateFromEmbedFSFolder(embedFS embed.FS, templateFile string) *template.Template { templateData, err := embedFS.ReadFile(templateFile) if err != nil { logging.Log.Fatal(err) } templateDataString := string(templateData) template, err := template.New("tmpl").Funcs(funcMap()).Parse(templateDataString) if err != nil { logging.Log.Fatal(err) } return template } func applyTemplates(templates [][2]string) { config := config.GetConfig() for _, templateData := range templates { var templateFile = templateData[0] var outFile = filepath.Join(config.BaseDir, templateData[1]) dir := filepath.Dir(outFile) err := os.MkdirAll(dir, 0755) if err != nil { logging.Log.Fatal(err) } tmpl := getTemplateFromEmbedFSFolder(resources.Templates, templateFile) file, err := os.Create(outFile) if err != nil { logging.Log.Fatal(err) } defer file.Close() err = tmpl.Execute(file, config) if err != nil { logging.Log.Fatal(err) } } }