Files

62 lines
1.3 KiB
Go
Raw Permalink Normal View History

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
}