41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package valuesfile
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/roboll/helmfile/environment"
|
|
"github.com/roboll/helmfile/tmpl"
|
|
"strings"
|
|
)
|
|
|
|
type renderer struct {
|
|
readFile func(string) ([]byte, error)
|
|
tmplFileRenderer tmpl.FileRenderer
|
|
}
|
|
|
|
func NewRenderer(readFile func(filename string) ([]byte, error), basePath string, env environment.Environment) *renderer {
|
|
return &renderer{
|
|
readFile: readFile,
|
|
tmplFileRenderer: tmpl.NewFileRenderer(readFile, basePath, env),
|
|
}
|
|
}
|
|
|
|
func (r *renderer) RenderToBytes(path string) ([]byte, error) {
|
|
var yamlBytes []byte
|
|
splits := strings.Split(path, ".")
|
|
if len(splits) > 0 && splits[len(splits)-1] == "gotmpl" {
|
|
yamlBuf, err := r.tmplFileRenderer.RenderTemplateFileToBuffer(path)
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to render [%s], because of %v", path, err)
|
|
}
|
|
yamlBytes = yamlBuf.Bytes()
|
|
} else {
|
|
var err error
|
|
yamlBytes, err = r.readFile(path)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to load [%s]: %v", path, err)
|
|
}
|
|
}
|
|
return yamlBytes, nil
|
|
}
|