From ca5a7328904915743eb30ef7de7be565ca96a393 Mon Sep 17 00:00:00 2001 From: Joshua Coughlan Date: Thu, 9 Jan 2025 16:59:19 -0600 Subject: [PATCH] split tty to additional FH and callback to log.Printf --- remote/remote.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/remote/remote.go b/remote/remote.go index 4e81932..f8e1af4 100644 --- a/remote/remote.go +++ b/remote/remote.go @@ -67,6 +67,10 @@ type config struct { wpPath string } +type lineWriter struct { + callback func(line string) +} + var remoteConfig config var wpCliEventSender eventSender @@ -699,10 +703,29 @@ func attachWpCliCmdRemote(conn net.Conn, wpcli *wpCLIProcess, GUID string, rows return nil } +func (lw *lineWriter) Write(p []byte) (n int, err error) { + lines := strings.Split(string(p), "\n") + for _, line := range lines { + if line != "" { + lw.callback(line) + } + } + return len(p), nil +} + func runWpCliCmdRemote(conn net.Conn, GUID string, rows uint16, cols uint16, wpCliCmdString string) error { + var cmdStdErr bytes.Buffer + cmdArgs := make([]string, 0) cmdArgs = append(cmdArgs, strings.Fields("--path="+remoteConfig.wpPath)...) + // Create a custom writer that logs stderr lines + stderrLogger := &lineWriter{ + callback: func(line string) { + log.Printf("runWpCliCmdRemote: stderr: %s", line) + }, + } + cleanArgs, err := getCleanWpCliArgumentArray(wpCliCmdString) if nil != err { conn.Write([]byte("WP CLI command is invalid")) @@ -715,6 +738,7 @@ func runWpCliCmdRemote(conn net.Conn, GUID string, rows uint16, cols uint16, wpC cmd := exec.Command(remoteConfig.wpCLIPath, cmdArgs...) cmd.Env = append(os.Environ(), "TERM=xterm-256color", "LESSSECURE=1") + cmd.Stderr = io.MultiWriter(&cmdStdErr, stderrLogger) log.Printf("launching %s - rows: %d, cols: %d, args: %s\n", GUID, rows, cols, strings.Join(cmdArgs, " "))