diff --git a/src/internal/contextFile.go b/src/internal/contextFile.go index 3be8fe9..d8da92a 100644 --- a/src/internal/contextFile.go +++ b/src/internal/contextFile.go @@ -107,6 +107,8 @@ func parseContextFile(dir string, data []byte) (Contexts, error) { contexts = parent.Merge(contexts) } + contexts = resolveEnvironmentVariables(contexts) + return contexts, nil } @@ -216,3 +218,23 @@ func resolvePath(dir, path string) (string, error) { return filepath.Join(dir, path), nil } + +func resolveEnvironmentVariables(contexts Contexts) Contexts { + clone := contexts + clone.Context = clone.Context.Clone() + clone.Layers = clone.Layers.Clone() + + for key, value := range clone.Env { + clone.Context.Env[key] = os.ExpandEnv(value) + } + + for _, layer := range clone.Layers { + for _, ctx := range layer.Contexts { + for key, value := range ctx.Env { + ctx.Env[key] = os.ExpandEnv(value) + } + } + } + + return clone +} diff --git a/src/internal/docker/cli.go b/src/internal/docker/cli.go index b415cc2..2e17582 100644 --- a/src/internal/docker/cli.go +++ b/src/internal/docker/cli.go @@ -145,11 +145,7 @@ func runContainer(ctx context.Context, yeyCtx yey.Context, containerName string, // Context env vars for name, value := range yeyCtx.Env { - arg := name - if value != "" { - arg = fmt.Sprintf("%s=%s", name, value) - } - args = append(args, "--env", arg) + args = append(args, "--env", fmt.Sprintf("%s=%s", name, value)) } // Mount binds