1
0
mirror of https://github.com/go-task/task.git synced 2025-04-07 07:09:55 +02:00

Prevent running command more than once

This commit is contained in:
Andrey Nering 2017-03-08 20:13:52 -03:00
parent 588de5d0dd
commit 53234b91e0

View File

@ -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) {