From 5edeace62edfdc59d36a5ca2b029b13ec49081c2 Mon Sep 17 00:00:00 2001 From: jamesread Date: Wed, 5 Jan 2022 09:54:40 +0000 Subject: [PATCH] bugfix: Working stderr! --- internal/executor/executor.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/internal/executor/executor.go b/internal/executor/executor.go index 5510cd1..d1cfc25 100644 --- a/internal/executor/executor.go +++ b/internal/executor/executor.go @@ -12,6 +12,7 @@ import ( "regexp" "strings" "time" + "bytes" ) var ( @@ -190,20 +191,27 @@ func (e stepExec) Exec(req *ExecutionRequest) bool { ctx, cancel := context.WithTimeout(context.Background(), time.Duration(req.action.Timeout)*time.Second) defer cancel() - cmd := exec.CommandContext(ctx, "sh", "-c", req.finalParsedCommand) - stdout, stderr := cmd.Output() + var stdout bytes.Buffer + var stderr bytes.Buffer - if stderr != nil { - req.logEntry.Stderr = stderr.Error() + cmd := exec.CommandContext(ctx, "sh", "-c", req.finalParsedCommand) + cmd.Stdout = &stdout + cmd.Stderr = &stderr + + runerr := cmd.Run() + + req.logEntry.ExitCode = int32(cmd.ProcessState.ExitCode()) + req.logEntry.Stdout = stdout.String() + req.logEntry.Stderr = stderr.String() + + if runerr != nil { + req.logEntry.Stderr = runerr.Error() + "\n\n" + req.logEntry.Stderr } if ctx.Err() == context.DeadlineExceeded { req.logEntry.TimedOut = true } - req.logEntry.ExitCode = int32(cmd.ProcessState.ExitCode()) - req.logEntry.Stdout = string(stdout) - return true }