68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package templatebuilder
|
|
|
|
import (
|
|
"bytes"
|
|
"html/template"
|
|
"os"
|
|
|
|
"gitea.tecamino.com/paadi/template-builder/models"
|
|
)
|
|
|
|
type TemplateBuilder struct {
|
|
}
|
|
|
|
func NewTemplateBuilder() *TemplateBuilder {
|
|
return &TemplateBuilder{}
|
|
}
|
|
|
|
func (tb *TemplateBuilder) GenerateFile(templatePath, outputFile string, data any) error {
|
|
tmpl, err := template.ParseFiles(templatePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
f, err := os.Create(outputFile)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
|
|
err = tmpl.Execute(f, data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (tb *TemplateBuilder) Generate(templatePath string, data any) (b []byte, err error) {
|
|
tmpl, err := template.ParseFiles(templatePath)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
err = tmpl.Execute(&buf, d)
|
|
if err != nil {
|
|
return
|
|
}
|
|
b = buf.Bytes()
|
|
|
|
return
|
|
}
|
|
|
|
func (tb *TemplateBuilder) GenerateMultiple(templatePath string, data ...any) (output models.Outputs, err error) {
|
|
tmpl, err := template.ParseFiles(templatePath)
|
|
if err != nil {
|
|
return
|
|
}
|
|
for _, d := range data {
|
|
var buf bytes.Buffer
|
|
err = tmpl.Execute(&buf, d)
|
|
if err != nil {
|
|
return
|
|
}
|
|
output = append(output, buf.Bytes())
|
|
}
|
|
return
|
|
}
|