Write host template on save

This commit is contained in:
Jamie Curnow
2022-07-21 18:02:07 +10:00
parent 5b6dbaf43e
commit 8d37f5df8d
5 changed files with 182 additions and 33 deletions

View File

@ -1,31 +1,46 @@
package nginx
import (
"io/fs"
"fmt"
"io/ioutil"
"npm/embed"
"npm/internal/entity/certificate"
"npm/internal/entity/host"
"npm/internal/logger"
"github.com/aymerick/raymond"
)
// WriteTemplate will load, parse and write a template file
func WriteTemplate(templateName, outputFilename string, data map[string]interface{}) error {
// get template file content
subFs, _ := fs.Sub(embed.NginxFiles, "nginx")
template, err := fs.ReadFile(subFs, templateName)
if err != nil {
return err
}
// Render
parsedFile, err := raymond.Render(string(template), data)
if err != nil {
return err
}
// Write it
// nolint: gosec
return ioutil.WriteFile(outputFilename, []byte(parsedFile), 0644)
// TemplateData ...
type TemplateData struct {
ConfDir string
DataDir string
CertsDir string
Host *host.Model
Certificate *certificate.Model
}
func generateHostConfig(template string, data TemplateData) (string, error) {
return raymond.Render(template, data)
}
func writeTemplate(filename, template string, data TemplateData) error {
output, err := generateHostConfig(template, data)
if err != nil {
output = fmt.Sprintf("# Template Error: %s", err.Error())
}
// Write it. This will also write an error comment if generation failed
// nolint: gosec
writeErr := writeConfigFile(filename, output)
if err != nil {
return err
}
return writeErr
}
func writeConfigFile(filename, content string) error {
logger.Debug("Writing %s with:\n%s", filename, content)
// nolint: gosec
return ioutil.WriteFile(filename, []byte(content), 0644)
}