From b9d1af315df5e86015d5022bfc4781c7ed290e89 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Wed, 8 Mar 2017 19:03:17 -0300 Subject: [PATCH] Do not support multiline result command by now --- variable_handling.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/variable_handling.go b/variable_handling.go index 2acdd4e4..eb771b62 100644 --- a/variable_handling.go +++ b/variable_handling.go @@ -3,6 +3,7 @@ package task import ( "bytes" "encoding/json" + "errors" "io/ioutil" "os" "os/exec" @@ -17,6 +18,8 @@ import ( var ( // TaskvarsFilePath file containing additional variables TaskvarsFilePath = "Taskvars" + // ErrMultilineResultCmd is returned when a command returns multiline result + ErrMultilineResultCmd = errors.New("Got multiline result from command") ) func handleDynamicVariableContent(value string) (string, error) { @@ -31,11 +34,17 @@ func handleDynamicVariableContent(value string) (string, error) { } cmd.Stdin = os.Stdin cmd.Stderr = os.Stderr - bytes, err := cmd.Output() + b, err := cmd.Output() if err != nil { return "", err } - return strings.TrimSpace(string(bytes)), nil + if b[len(b)-1] == '\n' { + b = b[:len(b)-1] + } + if bytes.ContainsRune(b, '\n') { + return "", ErrMultilineResultCmd + } + return strings.TrimSpace(string(b)), nil } func (t *Task) handleVariables() (map[string]string, error) {