github.com/geofffranks/garden-linux@v0.0.0-20160715111146-26c893169cfa/sysconfig/runner.go (about) 1 package sysconfig 2 3 import ( 4 "os" 5 "os/exec" 6 7 "code.cloudfoundry.org/garden-linux/process" 8 "github.com/cloudfoundry/gunk/command_runner" 9 ) 10 11 type runner struct { 12 command_runner.CommandRunner 13 14 env process.Env 15 } 16 17 func NewRunner(config Config, commandRunner command_runner.CommandRunner) command_runner.CommandRunner { 18 return &runner{ 19 CommandRunner: commandRunner, 20 21 env: config.Environ(), 22 } 23 } 24 25 func (runner *runner) Run(cmd *exec.Cmd) error { 26 return runner.CommandRunner.Run(runner.withEnv(cmd)) 27 } 28 29 func (runner *runner) Start(cmd *exec.Cmd) error { 30 return runner.CommandRunner.Start(runner.withEnv(cmd)) 31 } 32 33 func (runner *runner) Background(cmd *exec.Cmd) error { 34 return runner.CommandRunner.Background(runner.withEnv(cmd)) 35 } 36 37 func (runner *runner) withEnv(cmd *exec.Cmd) *exec.Cmd { 38 if len(cmd.Env) == 0 { 39 cmd.Env = append(os.Environ(), runner.env.Array()...) 40 } else { 41 cmd.Env = append(cmd.Env, runner.env.Array()...) 42 } 43 44 return cmd 45 }