From 53234b91e0e5f4317fc54dee6a446ac1867683ff Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Wed, 8 Mar 2017 20:13:52 -0300 Subject: [PATCH] Prevent running command more than once --- variable_handling.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/variable_handling.go b/variable_handling.go index 8321fb1d..484c68f2 100644 --- a/variable_handling.go +++ b/variable_handling.go @@ -22,10 +22,15 @@ var ( ErrMultilineResultCmd = errors.New("Got multiline result from command") ) +var varCmds = make(map[string]string) + func handleDynamicVariableContent(value string) (string, error) { if value == "" || value[0] != '$' { return value, nil } + if result, ok := varCmds[value]; ok { + return result, nil + } var cmd *exec.Cmd if ShExists { cmd = exec.Command(ShPath, "-c", value[1:]) @@ -44,7 +49,9 @@ func handleDynamicVariableContent(value string) (string, error) { if bytes.ContainsRune(b, '\n') { return "", ErrMultilineResultCmd } - return strings.TrimSpace(string(b)), nil + result := strings.TrimSpace(string(b)) + varCmds[value] = result + return result, nil } func (t *Task) handleVariables() (map[string]string, error) {