38 lines
586 B
Go
38 lines
586 B
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package nwo
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
type Command interface {
|
|
Args() []string
|
|
SessionName() string
|
|
}
|
|
|
|
type Enver interface {
|
|
Env() []string
|
|
}
|
|
|
|
type WorkingDirer interface {
|
|
WorkingDir() string
|
|
}
|
|
|
|
func NewCommand(path string, command Command) *exec.Cmd {
|
|
cmd := exec.Command(path, command.Args()...)
|
|
cmd.Env = os.Environ()
|
|
if ce, ok := command.(Enver); ok {
|
|
cmd.Env = append(cmd.Env, ce.Env()...)
|
|
}
|
|
if wd, ok := command.(WorkingDirer); ok {
|
|
cmd.Dir = wd.WorkingDir()
|
|
}
|
|
return cmd
|
|
}
|