fix(run.go): fixed command pipes

This commit is contained in:
Paul Fey 2025-02-28 13:25:11 +01:00
parent 109535214a
commit a7651c5b0b

32
run.go
View file

@ -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
}