fix(run.go): fixed command pipes
This commit is contained in:
parent
109535214a
commit
a7651c5b0b
1 changed files with 23 additions and 9 deletions
32
run.go
32
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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue