Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit cdde3e3

Browse files
authored
Merge pull request #98 from mnottale/renderer-mustache
renderer: Add mustache as a template engine.
2 parents 9eec848 + 9976d2a commit cdde3e3

File tree

13 files changed

+1062
-4
lines changed

13 files changed

+1062
-4
lines changed

Gopkg.lock

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/binary_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ func TestRenderBinary(t *testing.T) {
7777
assert.NilError(t, err, "unable to get apps")
7878
for _, app := range apps {
7979
t.Log("testing", app.Name())
80-
if (strings.Contains(app.Name(), "gotemplate") && !strings.Contains(renderers, "gotemplate")) ||
81-
(strings.Contains(app.Name(), "yatee") && !strings.Contains(renderers, "yatee")) {
82-
t.Skip("Required renderer not enabled.")
80+
if !checkRenderers(app.Name(), renderers) {
81+
t.Log("Required renderer not enabled.")
82+
continue
8383
}
8484
settings, overrides, env := gather(t, filepath.Join("render", app.Name()))
8585
args := []string{
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: "3.4"
2+
services:
3+
{{#myapp.enable}}
4+
enabledservice:
5+
image: alpine:{{myapp.alpine_version}}
6+
command: bash -c {{myapp.command1}} {{myapp.command2}} {{myapp.command3}}
7+
{{/myapp.enable}}
8+
{{#myapp.disable}}
9+
disabledservice:
10+
image: nginx
11+
{{/myapp.disable}}
12+
other:
13+
image: nginx
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
myapp.command3: bam
2+
myapp.disable: "false"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: "3.4"
2+
services:
3+
enabledservice:
4+
command:
5+
- bash
6+
- -c
7+
- cat
8+
- bar
9+
- bam
10+
image: alpine:latest
11+
other:
12+
image: nginx
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: 0.1.0
2+
name: myapp
3+
description: ""
4+
maintainers:
5+
- name: bearclaw
6+
7+
targets:
8+
swarm: true
9+
kubernetes: true
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
myapp:
2+
command2: bar
3+
command3: baz
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
myapp:
2+
alpine_version: latest
3+
command1: cat
4+
command2: foo
5+
enable: true

e2e/render_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88
"testing"
99

10+
"github.com/docker/lunchbox/internal"
1011
"github.com/docker/lunchbox/renderer"
1112

1213
"github.com/gotestyourself/gotestyourself/assert"
@@ -41,6 +42,17 @@ func gather(t *testing.T, dir string) ([]string, []string, map[string]string) {
4142
return settings, overrides, env
4243
}
4344

45+
// checkRenderer returns false if appname requires a renderer that is not in enabled
46+
func checkRenderers(appname string, enabled string) bool {
47+
renderers := []string{"gotemplate", "yatee", "mustache"}
48+
for _, r := range renderers {
49+
if strings.Contains(appname, r) && !strings.Contains(enabled, r) {
50+
return false
51+
}
52+
}
53+
return true
54+
}
55+
4456
func checkResult(t *testing.T, result string, resultErr error, dir string) {
4557
if resultErr != nil {
4658
ee := filepath.Join(dir, "expectedError.txt")
@@ -60,6 +72,10 @@ func TestRender(t *testing.T) {
6072
assert.NilError(t, err, "unable to get apps")
6173
for _, app := range apps {
6274
t.Log("testing", app.Name())
75+
if !checkRenderers(app.Name(), internal.Renderers) {
76+
t.Log("Required renderer not enabled.")
77+
continue
78+
}
6379
settings, overrides, env := gather(t, filepath.Join("render", app.Name()))
6480
// run the render
6581
config, resultErr := renderer.Render(filepath.Join("render", app.Name()), overrides, settings, env)

renderer/render.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010
"text/template"
1111

12+
"github.com/cbroglie/mustache"
1213
"github.com/docker/cli/cli/compose/loader"
1314
composetypes "github.com/docker/cli/cli/compose/types"
1415
"github.com/docker/lunchbox/internal"
@@ -132,6 +133,12 @@ func applyRenderers(data []byte, renderers []string, settings map[string]interfa
132133
return nil, err
133134
}
134135
data = []byte(strings.Replace(string(m), "$", "$$", -1))
136+
case "mustache":
137+
mdata, err := mustache.Render(string(data), settings)
138+
if err != nil {
139+
return nil, err
140+
}
141+
data = []byte(mdata)
135142
}
136143
}
137144
return data, nil

0 commit comments

Comments
 (0)