github.com/timo-reymann/yal@v0.0.0-20240419173834-5d47db58f9d1/pkg/templating/main.go (about) 1 package templating 2 3 import ( 4 "bytes" 5 _ "embed" 6 "github.com/timo-reymann/yal/pkg/buildinfo" 7 "github.com/timo-reymann/yal/pkg/config" 8 "os" 9 "text/template" 10 ) 11 12 //go:embed index.gohtml 13 var DefaultTemplate string 14 15 func RenderTemplate(path string, c *config.Configuration) ([]byte, error) { 16 var htmlFile []byte 17 var err error 18 if path == "builtin" { 19 htmlFile = []byte(DefaultTemplate) 20 } else { 21 htmlFile, err = os.ReadFile(path) 22 if err != nil { 23 return nil, err 24 } 25 } 26 27 tmpl := template.New("index") 28 tmpl.Funcs(template.FuncMap{ 29 "Version": func() string { 30 return buildinfo.Version 31 }, 32 }) 33 tmpl, err = tmpl.Parse(string(htmlFile)) 34 if err != nil { 35 return nil, err 36 } 37 38 var outputBuffer bytes.Buffer 39 err = tmpl.Execute(&outputBuffer, c) 40 if err != nil { 41 return nil, err 42 } 43 44 return outputBuffer.Bytes(), nil 45 }