From a7651c5b0b7a9b681bfc1e39fa6dbf4b7ea90133 Mon Sep 17 00:00:00 2001 From: pauljako Date: Fri, 28 Feb 2025 13:25:11 +0100 Subject: [PATCH] fix(run.go): fixed command pipes --- run.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/run.go b/run.go index b0b089e..67b401c 100644 --- a/run.go +++ b/run.go @@ -3,7 +3,6 @@ package main import ( "encoding/json" "errors" - "io" "net" "os" "os/exec" @@ -86,16 +85,31 @@ func run(conn net.Conn, instance string, program string, arguments string, targe if err != nil { return 0, err } - cmd := exec.Command("sh", "-c", command.(string)+" "+arguments) - cmd.Dir = working_dir - cmd.Env = append(cmd.Environ(), "APP_DIR="+package_path, "VAR_DIR="+var_path) - cmd.Stdout = io.MultiWriter(conn, os.Stdout) - cmd.Stderr = io.MultiWriter(conn, os.Stderr) + env := []string{"APP_DIR=" + package_path, "VAR_DIR=" + var_path} + return run_command(conn, command.(string)+" "+arguments, working_dir, env) +} + +func run_command(conn net.Conn, command string, workdir string, env_vars []string) (int, error) { + cmd := exec.Command("sh", "-c", command) + cmd.Dir = workdir + if env_vars != nil { + cmd.Env = append(cmd.Environ(), env_vars...) + } + cmd.Stdout = conn + cmd.Stderr = conn cmd.Stdin = conn - err = cmd.Run() + err := cmd.Start() if err != nil { return 0, err } - - return 0, nil + response := make(map[string]interface{}) + response["command"] = "start-command-pipe" + response_json, _ := json.Marshal(response) + conn.Write(response_json) + state, err := cmd.Process.Wait() + response["command"] = "end-command-pipe" + response["status_code"] = state.ExitCode() + response_json, _ = json.Marshal(response) + conn.Write(response_json) + return state.ExitCode(), err }