diff --git a/workflow/executor/os-specific/command.go b/workflow/executor/os-specific/command.go index d05e74e43bdf6..2831ef556ee2c 100644 --- a/workflow/executor/os-specific/command.go +++ b/workflow/executor/os-specific/command.go @@ -6,8 +6,11 @@ import ( "os/exec" "golang.org/x/term" + log "github.com/sirupsen/logrus" ) +var logger = log.WithField("argo", true) + func simpleStart(cmd *exec.Cmd) (func(), error) { if err := cmd.Start(); err != nil { return nil, err diff --git a/workflow/executor/os-specific/command_unix.go b/workflow/executor/os-specific/command_unix.go index edb68b1340500..977e4a7892ab7 100644 --- a/workflow/executor/os-specific/command_unix.go +++ b/workflow/executor/os-specific/command_unix.go @@ -15,9 +15,12 @@ import ( ) func StartCommand(cmd *exec.Cmd) (func(), error) { - closer := func() {} + if cmd.Stdin == nil { + cmd.Stdin = os.Stdin + } + cmd.SysProcAttr = &syscall.SysProcAttr{} if !isTerminal(cmd.Stdin) { @@ -34,13 +37,13 @@ func StartCommand(cmd *exec.Cmd) (func(), error) { stdin, ok := cmd.Stdin.(*os.File) if !ok { // should never happen when stdin is a tty - return nil, fmt.Errorf("Cannot convert stdin to os.File") + return nil, fmt.Errorf("Cannot convert stdin to os.File, it was %T", cmd.Stdin) } stdout := cmd.Stdout stderr := cmd.Stderr - // pyt.Start will not assign these to the pty unless they are nil + // pty.Start will not assign these to the pty unless they are nil cmd.Stdin = nil cmd.Stdout = nil cmd.Stderr = nil @@ -56,7 +59,9 @@ func StartCommand(cmd *exec.Cmd) (func(), error) { go func() { for range sigWinchCh { // TODO: log error somehow? - _ = pty.InheritSize(stdin, ptmx) + if err := pty.InheritSize(stdin, ptmx); err != nil { + logger.WithError(err).Warn("Cannot resize pty") + } } }() diff --git a/workflow/executor/os-specific/command_windows.go b/workflow/executor/os-specific/command_windows.go index c431b3823c44c..5caf0d6ad2f86 100644 --- a/workflow/executor/os-specific/command_windows.go +++ b/workflow/executor/os-specific/command_windows.go @@ -1,14 +1,15 @@ package os_specific import ( + "os" "os/exec" - - log "github.com/sirupsen/logrus" ) -var logger = log.WithField("argo", true) - func StartCommand(cmd *exec.Cmd) (func(), error) { + if cmd.Stdin == nil { + cmd.Stdin = os.Stdin + } + if isTerminal(cmd.Stdin) { logger.Warn("TTY detected but is not supported on windows") }