From 05d93b2c7aa248dbd2a6ea51a90b9c68e2c3a8d0 Mon Sep 17 00:00:00 2001 From: Matthew Fisher Date: Tue, 24 Sep 2019 11:41:31 -0700 Subject: [PATCH] feat(cmd): implement `helm get --template` Signed-off-by: Matthew Fisher --- cmd/helm/get.go | 11 ++++++++++- cmd/helm/get_test.go | 5 +++++ cmd/helm/testdata/output/get-release-template.txt | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 cmd/helm/testdata/output/get-release-template.txt diff --git a/cmd/helm/get.go b/cmd/helm/get.go index bc98c33c2..acbe5fe27 100644 --- a/cmd/helm/get.go +++ b/cmd/helm/get.go @@ -39,6 +39,7 @@ chart, the supplied values, and the generated manifest file. ` func newGetCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { + var template string client := action.NewGet(cfg) cmd := &cobra.Command{ @@ -51,11 +52,19 @@ func newGetCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { if err != nil { return err } + if template != "" { + data := map[string]interface{}{ + "Release": res, + } + return tpl(template, data, out) + } return printRelease(out, res) }, } - cmd.Flags().IntVar(&client.Version, "revision", 0, "get the named release with revision") + f := cmd.Flags() + f.IntVar(&client.Version, "revision", 0, "get the named release with revision") + f.StringVar(&template, "template", "", "go template for formatting the output, eg: {{.Release.Name}}") cmd.AddCommand(newGetValuesCmd(cfg, out)) cmd.AddCommand(newGetManifestCmd(cfg, out)) diff --git a/cmd/helm/get_test.go b/cmd/helm/get_test.go index 21eba28e1..6fc7d6e32 100644 --- a/cmd/helm/get_test.go +++ b/cmd/helm/get_test.go @@ -28,6 +28,11 @@ func TestGetCmd(t *testing.T) { cmd: "get thomas-guide", golden: "output/get-release.txt", rels: []*release.Release{release.Mock(&release.MockReleaseOptions{Name: "thomas-guide"})}, + }, { + name: "get with a formatted release", + cmd: "get elevated-turkey --template {{.Release.Chart.Metadata.Version}}", + golden: "output/get-release-template.txt", + rels: []*release.Release{release.Mock(&release.MockReleaseOptions{Name: "elevated-turkey"})}, }, { name: "get requires release name arg", cmd: "get", diff --git a/cmd/helm/testdata/output/get-release-template.txt b/cmd/helm/testdata/output/get-release-template.txt new file mode 100644 index 000000000..02d44fb01 --- /dev/null +++ b/cmd/helm/testdata/output/get-release-template.txt @@ -0,0 +1 @@ +0.1.0-beta.1 \ No newline at end of file