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  }