10 type JobFunction struct {
11 function func(string, ...string)
16 type CallbackFile struct {
19 callback func(string, ...string)
23 func (f *CallbackFile) Write(data []byte) (int, error) {
24 jobFunc := JobFunction{f.callback, string(data), f.args}
26 return f.Writer.Write(data)
29 func JobStart(cmd string, onStdout, onStderr, onExit string, userargs ...string) *exec.Cmd {
30 split := strings.Split(cmd, " ")
34 proc := exec.Command(cmdName, args...)
35 var outbuf bytes.Buffer
37 proc.Stdout = &CallbackFile{&outbuf, LuaFunctionJob(onStdout), userargs}
42 proc.Stderr = &CallbackFile{&outbuf, LuaFunctionJob(onStderr), userargs}
49 jobFunc := JobFunction{LuaFunctionJob(onExit), string(outbuf.Bytes()), userargs}
56 func JobStop(cmd *exec.Cmd) {
60 func JobSend(cmd *exec.Cmd, data string) {
61 stdin, err := cmd.StdinPipe()
66 stdin.Write([]byte(data))