service/example/runner: append envs.

This commit is contained in:
Daniel Theophanes
2015-03-29 00:11:40 -07:00
parent 842e0b7dbc
commit 09da6fcd5a
+13 -8
View File
@@ -36,6 +36,8 @@ type program struct {
service service.Service
*Config
cmd *exec.Cmd
}
func (p *program) Start(s service.Service) error {
@@ -46,14 +48,14 @@ func (p *program) Start(s service.Service) error {
return fmt.Errorf("Failed to find executable %q: %v", p.Exec, err)
}
cmd := exec.Command(fullExec, p.Args...)
cmd.Dir = p.Dir
cmd.Env = p.Env
p.cmd = exec.Command(fullExec, p.Args...)
p.cmd.Dir = p.Dir
p.cmd.Env = append(os.Environ(), p.Env...)
go p.run(cmd)
go p.run()
return nil
}
func (p *program) run(cmd *exec.Cmd) {
func (p *program) run() {
logger.Info("Starting ", p.DisplayName)
defer func() {
if service.Interactive() {
@@ -70,7 +72,7 @@ func (p *program) run(cmd *exec.Cmd) {
return
}
defer f.Close()
cmd.Stderr = f
p.cmd.Stderr = f
}
if p.Stdout != "" {
f, err := os.OpenFile(p.Stdout, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0777)
@@ -79,10 +81,10 @@ func (p *program) run(cmd *exec.Cmd) {
return
}
defer f.Close()
cmd.Stdout = f
p.cmd.Stdout = f
}
err := cmd.Run()
err := p.cmd.Run()
if err != nil {
logger.Warningf("Error running: %v", err)
}
@@ -92,6 +94,9 @@ func (p *program) run(cmd *exec.Cmd) {
func (p *program) Stop(s service.Service) error {
close(p.exit)
logger.Info("Stopping ", p.DisplayName)
if p.cmd.ProcessState.Exited() == false {
p.cmd.Process.Kill()
}
if service.Interactive() {
os.Exit(0)
}