From 66d04cbb6ecdab0c413e68a92bc3f28a663c9e69 Mon Sep 17 00:00:00 2001 From: MouseRage Date: Sat, 11 Jun 2016 00:29:23 +0500 Subject: [PATCH] Templates partials --- cmd/tiller/release_server.go | 7 +++++++ cmd/tiller/release_server_test.go | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/cmd/tiller/release_server.go b/cmd/tiller/release_server.go index ce4f061ac..7c3f62d20 100644 --- a/cmd/tiller/release_server.go +++ b/cmd/tiller/release_server.go @@ -5,8 +5,10 @@ import ( "errors" "fmt" "log" + "path" "regexp" "sort" + "strings" "github.com/technosophos/moniker" ctx "golang.org/x/net/context" @@ -213,6 +215,11 @@ func (s *releaseServer) InstallRelease(c ctx.Context, req *services.InstallRelea b := bytes.NewBuffer(nil) for name, file := range files { + // Ignore templates that starts with underscore to handle them as partials + if strings.HasPrefix(path.Base(name), "_") { + continue + } + // Ignore empty documents because the Kubernetes library can't handle // them. if len(file) > 0 { diff --git a/cmd/tiller/release_server_test.go b/cmd/tiller/release_server_test.go index 4a31c2dbe..7104a4955 100644 --- a/cmd/tiller/release_server_test.go +++ b/cmd/tiller/release_server_test.go @@ -97,6 +97,8 @@ func TestInstallReleaseDryRun(t *testing.T) { {Name: "hello", Data: []byte("hello: world")}, {Name: "goodbye", Data: []byte("goodbye: world")}, {Name: "empty", Data: []byte("")}, + {Name: "with-partials", Data: []byte("hello: {{ template \"partials/_planet\" . }}")}, + {Name: "partials/_planet", Data: []byte("Earth")}, }, }, DryRun: true, @@ -117,6 +119,14 @@ func TestInstallReleaseDryRun(t *testing.T) { t.Errorf("unexpected output: %s", res.Release.Manifest) } + if !strings.Contains(res.Release.Manifest, "hello: Earth") { + t.Errorf("Should contain partial content. %s", res.Release.Manifest) + } + + if strings.Contains(res.Release.Manifest, "hello: {{ template \"partials/_planet\" . }}") { + t.Errorf("Should not contain partial templates itself. %s", res.Release.Manifest) + } + if strings.Contains(res.Release.Manifest, "empty") { t.Errorf("Should not contain template data for an empty file. %s", res.Release.Manifest) }