pkg/providers/commandrunner.go (28 lines of code) (raw):
package providers
import (
"errors"
"os/exec"
log "github.com/sirupsen/logrus"
)
// CommandRunner is an interface for executing commands and getting the output/error
type CommandRunner interface {
RunCommand(...string) (string, error)
}
type DefaultCommandRunner struct{}
var _ CommandRunner = &DefaultCommandRunner{}
func (d *DefaultCommandRunner) RunCommand(args ...string) (string, error) {
log.Debug("Running command: ", args)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
return string(out), err
}
type FakeCommandRunner struct {
Output string
ErrStr string
}
var _ CommandRunner = &FakeCommandRunner{}
func (f *FakeCommandRunner) RunCommand(args ...string) (string, error) {
if f.ErrStr != "" {
return f.Output, errors.New(f.ErrStr)
}
return f.Output, nil
}