From 4c1795a32d85557a5e928e11a20c027ee1bdad51 Mon Sep 17 00:00:00 2001 From: Oleg Sucharevich Date: Wed, 21 Aug 2019 16:13:33 +0300 Subject: [PATCH] Support passing left and right delims --- VERSION | 2 +- cmd/render.go | 11 +++++++++++ pkg/renderer/renderer.go | 19 +++++++++++++++---- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 8f0916f..a918a2a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.5.0 +0.6.0 diff --git a/cmd/render.go b/cmd/render.go index 2921c64..337df99 100644 --- a/cmd/render.go +++ b/cmd/render.go @@ -4,6 +4,7 @@ import ( "fmt" "io" "os" + "path" "strings" @@ -16,6 +17,8 @@ var renderCmdOptions struct { templates []string values []string rootContext string + rightDelim string + leftDelim string } var renderCmd = &cobra.Command{ @@ -24,6 +27,9 @@ var renderCmd = &cobra.Command{ templateReaders := make(map[string]io.Reader) valueReaders := make(map[string]io.Reader) log := logger.New(nil) + if len(renderCmdOptions.templates) == 0 { + dieOnError(fmt.Errorf("No tempalte given"), log) + } for _, templatePath := range renderCmdOptions.templates { file, err := os.Open(templatePath) dieOnError(err, log) @@ -63,6 +69,9 @@ var renderCmd = &cobra.Command{ engine := renderer.New(&renderer.Options{ TemplateReaders: templateReaders, ValueReaders: valueReaders, + LeftDelim: renderCmdOptions.leftDelim, + RightDelim: renderCmdOptions.rightDelim, + Name: path.Base(renderCmdOptions.templates[0]), }) res, err := engine.Render() dieOnError(err, log) @@ -75,4 +84,6 @@ func init() { renderCmd.Flags().StringArrayVar(&renderCmdOptions.templates, "template", []string{}, "Path to template file") renderCmd.Flags().StringArrayVar(&renderCmdOptions.values, "value", []string{}, "Path to value file") renderCmd.Flags().StringVar(&renderCmdOptions.rootContext, "root-namespace", "Values", "Name of the root namespace (default: Values)") + renderCmd.Flags().StringVar(&renderCmdOptions.leftDelim, "left-delim", "<<", "Left delimiter (default: <<)") + renderCmd.Flags().StringVar(&renderCmdOptions.rightDelim, "right-delim", ">>", "Right delimiter (default: >>)") } diff --git a/pkg/renderer/renderer.go b/pkg/renderer/renderer.go index 02a5667..8d689e1 100644 --- a/pkg/renderer/renderer.go +++ b/pkg/renderer/renderer.go @@ -21,6 +21,9 @@ type ( TemplateReaders map[string]io.Reader ValueReaders map[string]io.Reader RootNamespace string + LeftDelim string + RightDelim string + Name string } Values map[string]interface{} @@ -28,6 +31,9 @@ type ( renderer struct { templateReaders map[string]io.Reader valueReaders map[string]io.Reader + leftDelim string + rightDelim string + name string } ) @@ -35,6 +41,9 @@ func New(opt *Options) Renderer { return &renderer{ templateReaders: opt.TemplateReaders, valueReaders: opt.ValueReaders, + leftDelim: opt.LeftDelim, + rightDelim: opt.RightDelim, + name: opt.Name, } } @@ -50,6 +59,7 @@ func (r *renderer) Render() (*bytes.Buffer, error) { } content = append(content, string(res)) } + for name, reader := range r.valueReaders { vals := Values{} res, err := ioutil.ReadAll(reader) @@ -65,10 +75,11 @@ func (r *renderer) Render() (*bytes.Buffer, error) { } - tmpl := template.New("") - tmpl.Funcs(gomplate.Funcs(nil)) - tmpl.Parse(strings.Join(content, "\n")) - err := tmpl.Execute(out, root) + tmpl, err := template.New(r.name).Funcs(gomplate.Funcs(nil)).Delims(r.leftDelim, r.rightDelim).Parse(strings.Join(content, "\n")) + if err != nil { + return nil, err + } + err = tmpl.Execute(out, root) if err != nil { return nil, err }