Catch command pipeline error.
Rather than ignoring errors in the pipeline, return an execution error and do not proceed with the latest command in the pipeline. Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
parent
94d7adb3c4
commit
c5ceeda30a
1 changed files with 8 additions and 1 deletions
|
@ -191,12 +191,19 @@ func RunCommandPipelineWithOutput(cmds ...*exec.Cmd) (output string, exitCode in
|
|||
}
|
||||
}
|
||||
|
||||
var pipelineError error
|
||||
defer func() {
|
||||
// wait all cmds except the last to release their resources
|
||||
for _, cmd := range cmds[:len(cmds)-1] {
|
||||
cmd.Wait()
|
||||
if err := cmd.Wait(); err != nil {
|
||||
pipelineError = fmt.Errorf("command %s failed with error: %v", cmd.Path, err)
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
if pipelineError != nil {
|
||||
return "", 0, pipelineError
|
||||
}
|
||||
|
||||
// wait on last cmd
|
||||
return RunCommandWithOutput(cmds[len(cmds)-1])
|
||||
|
|
Loading…
Reference in a new issue