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 ( import (
"encoding/json" "encoding/json"
"errors" "errors"
"io"
"net" "net"
"os" "os"
"os/exec" "os/exec"
@ -86,16 +85,31 @@ func run(conn net.Conn, instance string, program string, arguments string, targe
if err != nil { if err != nil {
return 0, err return 0, err
} }
cmd := exec.Command("sh", "-c", command.(string)+" "+arguments) env := []string{"APP_DIR=" + package_path, "VAR_DIR=" + var_path}
cmd.Dir = working_dir return run_command(conn, command.(string)+" "+arguments, working_dir, env)
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) 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 cmd.Stdin = conn
err = cmd.Run() err := cmd.Start()
if err != nil { if err != nil {
return 0, err return 0, err
} }
response := make(map[string]interface{})
return 0, nil 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
} }