bake: allow BAKE_CMD_CONTEXT builtin var

Allows accessing the main context for bake command from bake
file that has been imported remotely.

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
Tonis Tiigi
2021-07-12 17:53:04 -07:00
parent 5f6ad50df4
commit 1bb425a882
5 changed files with 113 additions and 30 deletions

View File

@ -276,7 +276,7 @@ func TestHCLMultiFileSharedVariables(t *testing.T) {
c, err := ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
require.Equal(t, c.Targets[0].Name, "app")
@ -288,7 +288,7 @@ func TestHCLMultiFileSharedVariables(t *testing.T) {
c, err = ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
@ -326,7 +326,7 @@ func TestHCLVarsWithVars(t *testing.T) {
c, err := ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
require.Equal(t, c.Targets[0].Name, "app")
@ -338,7 +338,7 @@ func TestHCLVarsWithVars(t *testing.T) {
c, err = ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
@ -483,7 +483,7 @@ func TestHCLMultiFileAttrs(t *testing.T) {
c, err := ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
require.Equal(t, c.Targets[0].Name, "app")
@ -494,7 +494,7 @@ func TestHCLMultiFileAttrs(t *testing.T) {
c, err = ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.hcl"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
@ -589,7 +589,7 @@ services:
c, err := ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
{Data: dt2, Name: "c2.yml"},
})
}, nil)
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
@ -599,3 +599,24 @@ services:
require.Equal(t, "dir", *c.Targets[0].Context)
require.Equal(t, "Dockerfile-alternate", *c.Targets[0].Dockerfile)
}
func TestHCLBuiltinVars(t *testing.T) {
dt := []byte(`
target "app" {
context = BAKE_CMD_CONTEXT
dockerfile = "test"
}
`)
c, err := ParseFiles([]File{
{Data: dt, Name: "c1.hcl"},
}, map[string]string{
"BAKE_CMD_CONTEXT": "foo",
})
require.NoError(t, err)
require.Equal(t, 1, len(c.Targets))
require.Equal(t, c.Targets[0].Name, "app")
require.Equal(t, "foo", *c.Targets[0].Context)
require.Equal(t, "test", *c.Targets[0].Dockerfile)
}