Skip to content

Commit 7af5a2b

Browse files
committed
interpolate applies env first
1 parent c3667a3 commit 7af5a2b

3 files changed

Lines changed: 35 additions & 3 deletions

File tree

internal/commands/interpolate_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,35 @@ func TestInterpolate(t *testing.T) {
130130
require.Equal(t, want, have, cmp.Diff(have, want))
131131
})
132132

133+
t.Run("var overrides env", func(t *testing.T) {
134+
// a variable defined in the env should be overridden by a command line arg or var file
135+
cx := SetupTestContext(t)
136+
137+
err := cx.fs.WriteFile("/template/.caster.yml", []byte("files:\n- name: test.txt\n content: {{.key}}"), 0600)
138+
require.NoError(t, err)
139+
140+
err = cx.fs.WriteFile("/data/1.yml", []byte("key: third"), 0600)
141+
require.NoError(t, err)
142+
143+
args := []string{"caster", "interpolate", "--var", "key=second", "--var-file", "/data/1.yml", "-t", "/template"}
144+
cx.app.Metadata[global.OSArgs] = args
145+
146+
err = cx.env.Set("CASTER_VAR_key", "first")
147+
require.NoError(t, err)
148+
149+
err = cx.app.Run(args)
150+
require.NoError(t, err)
151+
152+
buf, ok := cx.console.Out().(*bytes.Buffer)
153+
require.True(t, ok)
154+
want := `files:
155+
- name: test.txt
156+
content: third
157+
`
158+
have := buf.String()
159+
require.Equal(t, want, have, cmp.Diff(have, want))
160+
})
161+
133162
t.Run("default", func(t *testing.T) {
134163
cx := SetupTestContext(t)
135164
cx.fs.WriteFile("/working/.caster.yml", []byte("files:\n- name: test.txt\n content: {{.key}}"), 0600)

internal/global/globals.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ package global
22

33
const (
44
DependencyInjectionContainer = "di"
5-
OSArgs = "os.Args"
5+
// pass os args in metadata because urfave.cli masks them
6+
OSArgs = "os.Args"
67
)

internal/interpolate/service.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,12 @@ func (s *service) createDataMap(variables []models.Variable) (map[string]any, er
106106
}
107107
}
108108
data := map[string]any{}
109-
for k, v := range args {
109+
110+
for k, v := range env {
110111
data[k] = v
111112
}
112-
for k, v := range env {
113+
114+
for k, v := range args {
113115
data[k] = v
114116
}
115117
return data, nil

0 commit comments

Comments
 (0)