feat(tiller): add toYaml template function

This adds the function toYaml to the Engine template functions.

Closes #1225
pull/1230/head
Matt Butcher 8 years ago
parent 2d449d3eb0
commit 431cc46cad

@ -24,6 +24,8 @@ import (
"text/template"
"github.com/Masterminds/sprig"
"github.com/ghodss/yaml"
"k8s.io/helm/pkg/chartutil"
"k8s.io/helm/pkg/proto/hapi/chart"
)
@ -49,11 +51,23 @@ func New() *Engine {
f := sprig.TxtFuncMap()
delete(f, "env")
delete(f, "expandenv")
// Add a function to convert to YAML:
f["toYaml"] = toYaml
return &Engine{
FuncMap: f,
}
}
func toYaml(v interface{}) string {
data, err := yaml.Marshal(v)
if err != nil {
// Swallow errors inside of a template.
return ""
}
return string(data)
}
// Render takes a chart, optional values, and value overrides, and attempts to render the Go templates.
//
// Render can be called repeatedly on the same engine.

@ -27,6 +27,19 @@ import (
"github.com/golang/protobuf/ptypes/any"
)
func TestToYaml(t *testing.T) {
expect := "foo: bar\n"
v := struct {
Foo string `json:"foo"`
}{
Foo: "bar",
}
if got := toYaml(v); got != expect {
t.Errorf("Expected %q, got %q", expect, got)
}
}
func TestEngine(t *testing.T) {
e := New()

Loading…
Cancel
Save