From f56b3e9542d52d38c164a91a080b4f4cfdb27db4 Mon Sep 17 00:00:00 2001 From: Priya Wadhwa Date: Wed, 21 Mar 2018 13:37:00 -0700 Subject: [PATCH] Environment replacement --- pkg/util/command_util.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/pkg/util/command_util.go b/pkg/util/command_util.go index de10fed42..dde948b84 100644 --- a/pkg/util/command_util.go +++ b/pkg/util/command_util.go @@ -38,9 +38,24 @@ func ResolveEnvironmentReplacement(command, value string, envs []string) (string return "", err } shlex := shell.NewLex(p.EscapeToken) - processedWord, err := shlex.ProcessWord(value, envs) + return shlex.ProcessWord(value, envs) +} + +// ResolveFilepathEnvironmentReplacement replaces env variables in filepaths +// and returns a cleaned version of the path +func ResolveFilepathEnvironmentReplacement(command, value string, envs []string) (string, error) { + p, err := parser.Parse(bytes.NewReader([]byte(command))) if err != nil { return "", err } - return filepath.Clean(processedWord), nil + shlex := shell.NewLex(p.EscapeToken) + fp, err := shlex.ProcessWord(value, envs) + if err != nil { + return "", err + } + fp = filepath.Clean(fp) + if filepath.IsAbs(value) { + fp = filepath.Join(fp, "/") + } + return fp, nil }