62 lines
1.4 KiB
Go
62 lines
1.4 KiB
Go
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 {
|
|
panic(err)
|
|
}
|
|
templateResultString := templateResult.String()
|
|
return templateResultString
|
|
}
|
|
|
|
func getTemplateFromEmbedFSFolder(embedFS embed.FS, templateFile string) *template.Template {
|
|
templateData, err := embedFS.ReadFile(templateFile)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
templateDataString := string(templateData)
|
|
template, err := template.New("tmpl").Funcs(funcMap()).Parse(templateDataString)
|
|
if err != nil {
|
|
panic(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 {
|
|
panic(err)
|
|
}
|
|
defer file.Close()
|
|
err = tmpl.Execute(file, config)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|