2019-01-08 07:58:46 +11:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"bytes"
|
2019-05-10 21:23:58 +10:00
|
|
|
"os"
|
2019-01-08 07:58:46 +11:00
|
|
|
"os/exec"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ShellHelper helps with Shell commands
|
|
|
|
|
type ShellHelper struct {
|
2020-02-23 06:03:00 +11:00
|
|
|
verbose bool
|
2019-01-08 07:58:46 +11:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NewShellHelper creates a new ShellHelper!
|
|
|
|
|
func NewShellHelper() *ShellHelper {
|
|
|
|
|
return &ShellHelper{}
|
|
|
|
|
}
|
|
|
|
|
|
2020-02-23 06:03:00 +11:00
|
|
|
// SetVerbose sets the verbose flag
|
|
|
|
|
func (sh *ShellHelper) SetVerbose() {
|
|
|
|
|
sh.verbose = true
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-08 07:58:46 +11:00
|
|
|
// Run the given command
|
|
|
|
|
func (sh *ShellHelper) Run(command string, vars ...string) (stdout, stderr string, err error) {
|
|
|
|
|
cmd := exec.Command(command, vars...)
|
2019-05-10 21:23:58 +10:00
|
|
|
cmd.Env = append(os.Environ(), "GO111MODULE=on")
|
2020-02-23 06:03:00 +11:00
|
|
|
if !sh.verbose {
|
|
|
|
|
var stdo, stde bytes.Buffer
|
|
|
|
|
cmd.Stdout = &stdo
|
|
|
|
|
cmd.Stderr = &stde
|
|
|
|
|
err = cmd.Run()
|
|
|
|
|
stdout = string(stdo.Bytes())
|
|
|
|
|
stderr = string(stde.Bytes())
|
|
|
|
|
} else {
|
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
|
err = cmd.Run()
|
|
|
|
|
}
|
2019-01-08 07:58:46 +11:00
|
|
|
return
|
|
|
|
|
}
|
2019-05-07 08:48:52 +10:00
|
|
|
|
|
|
|
|
// RunInDirectory runs the given command in the given directory
|
|
|
|
|
func (sh *ShellHelper) RunInDirectory(dir string, command string, vars ...string) (stdout, stderr string, err error) {
|
|
|
|
|
cmd := exec.Command(command, vars...)
|
|
|
|
|
cmd.Dir = dir
|
2019-05-10 21:23:58 +10:00
|
|
|
cmd.Env = append(os.Environ(), "GO111MODULE=on")
|
2020-02-23 06:03:00 +11:00
|
|
|
if !sh.verbose {
|
|
|
|
|
var stdo, stde bytes.Buffer
|
|
|
|
|
cmd.Stdout = &stdo
|
|
|
|
|
cmd.Stderr = &stde
|
|
|
|
|
err = cmd.Run()
|
|
|
|
|
stdout = string(stdo.Bytes())
|
|
|
|
|
stderr = string(stde.Bytes())
|
|
|
|
|
} else {
|
|
|
|
|
cmd.Stdout = os.Stdout
|
|
|
|
|
cmd.Stderr = os.Stderr
|
|
|
|
|
err = cmd.Run()
|
|
|
|
|
}
|
2019-05-07 08:48:52 +10:00
|
|
|
return
|
|
|
|
|
}
|