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

Commit 5722933

Browse files
author
Matthieu Nottale
committed
render: Return the Config instead of its serialized form.
Signed-off-by: Matthieu Nottale <[email protected]>
1 parent d2f0b07 commit 5722933

File tree

3 files changed

+26
-18
lines changed

3 files changed

+26
-18
lines changed

cmd/render.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/docker/lunchbox/packager"
99
"github.com/spf13/cobra"
10+
"gopkg.in/yaml.v2"
1011
)
1112

1213
var renderCmd = &cobra.Command{
@@ -23,12 +24,17 @@ var renderCmd = &cobra.Command{
2324
}
2425
d[kv[0]] = kv[1]
2526
}
26-
res, err := packager.Render(args[0], renderComposeFiles, renderSettingsFile, d)
27+
rendered, err := packager.Render(args[0], renderComposeFiles, renderSettingsFile, d)
2728
if err != nil {
2829
fmt.Printf("%v\n", err)
2930
os.Exit(1)
3031
}
31-
fmt.Println(res)
32+
res, err := yaml.Marshal(rendered)
33+
if err != nil {
34+
fmt.Printf("%v\n", err)
35+
os.Exit(1)
36+
}
37+
fmt.Println(string(res))
3238
},
3339
}
3440

e2e/render_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,13 @@ func TestRender(t *testing.T) {
4343
assert.NilError(t, err, "unable to unmarshal env")
4444
}
4545
// run the render
46-
result, resultErr := packager.Render(path.Join("render", app.Name()), overrides, settings, env)
46+
config, resultErr := packager.Render(path.Join("render", app.Name()), overrides, settings, env)
47+
var result string
48+
if resultErr == nil {
49+
var bytes []byte
50+
bytes, resultErr = yaml.Marshal(config)
51+
result = string(bytes)
52+
}
4753
if resultErr != nil {
4854
expectedErr := readFile(t, path.Join("render", app.Name(), "expectedError.txt"))
4955
assert.ErrorContains(t, resultErr, expectedErr)

packager/render.go

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ func loadSettings(files []string) (map[string]interface{}, error) {
6969
}
7070

7171
// Render renders the composefile for this app, merging in settings files, other compose files, end env
72-
func Render(appname string, composeFiles []string, settingsFile []string, env map[string]string) (string, error) {
72+
func Render(appname string, composeFiles []string, settingsFile []string, env map[string]string) (*composetypes.Config, error) {
7373
appname, cleanup, err := Extract(appname)
7474
if err != nil {
75-
return "", err
75+
return nil, err
7676
}
7777
defer cleanup()
7878
// prepend the app settings to the argument settings
@@ -81,18 +81,18 @@ func Render(appname string, composeFiles []string, settingsFile []string, env ma
8181
// load the settings into a struct
8282
settings, err := loadSettings(sf)
8383
if err != nil {
84-
return "", err
84+
return nil, err
8585
}
8686
// inject our metadata
8787
metaFile := path.Join(appname, "metadata.yml")
8888
meta := make(map[interface{}]interface{})
8989
metaContent, err := ioutil.ReadFile(metaFile)
9090
if err != nil {
91-
return "", err
91+
return nil, err
9292
}
9393
err = yaml.Unmarshal(metaContent, &meta)
9494
if err != nil {
95-
return "", err
95+
return nil, err
9696
}
9797
metaPrefixed := make(map[interface{}]interface{})
9898
metaPrefixed["app"] = meta
@@ -109,7 +109,7 @@ func Render(appname string, composeFiles []string, settingsFile []string, env ma
109109
var converted interface{}
110110
err = yaml.Unmarshal([]byte(v), &converted)
111111
if err != nil {
112-
return "", err
112+
return nil, err
113113
}
114114
val[ss[len(ss)-1]] = converted
115115
merge(settings, valroot)
@@ -125,20 +125,20 @@ func Render(appname string, composeFiles []string, settingsFile []string, env ma
125125
for _, c := range composes {
126126
data, err := ioutil.ReadFile(c)
127127
if err != nil {
128-
return "", err
128+
return nil, err
129129
}
130130
tmpl, err := template.New("compose").Parse(string(data))
131131
if err != nil {
132-
return "", err
132+
return nil, err
133133
}
134134
yaml := bytes.NewBuffer(nil)
135135
err = tmpl.Execute(yaml, settings)
136136
if err != nil {
137-
return "", err
137+
return nil, err
138138
}
139139
parsed, err := loader.ParseYAML(yaml.Bytes())
140140
if err != nil {
141-
return "", err
141+
return nil, err
142142
}
143143
configFiles = append(configFiles, composetypes.ConfigFile{Config: parsed})
144144
}
@@ -149,9 +149,5 @@ func Render(appname string, composeFiles []string, settingsFile []string, env ma
149149
ConfigFiles: configFiles,
150150
Environment: finalEnv,
151151
})
152-
if err != nil {
153-
return "", err
154-
}
155-
res, err := yaml.Marshal(rendered)
156-
return string(res), err
152+
return rendered, err
157153
}

0 commit comments

Comments
 (0)