blob: 0071c20107d271b5dd380731669ea3abacb23542 [file] [log] [blame]
package main
import (
"os"
"os/exec"
)
type cmdRunner struct {
exe string
args []string
cmd *exec.Cmd
}
func (r *cmdRunner) run(result chan error) {
r.cmd = exec.Command(r.exe, r.args...)
r.cmd.Stdout = os.Stdout
r.cmd.Stderr = os.Stderr
err := r.cmd.Start()
go func() {
if err != nil {
result <- err
} else {
result <- r.cmd.Wait()
}
}()
}
func (r *cmdRunner) kill() error {
return r.cmd.Process.Kill()
}
func makeRunner(exe string, arg ...string) cmdRunner {
r := cmdRunner{exe: exe, args: arg}
return r
}