mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 22:13:36 +08:00
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package cmd
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
// ShellHelper helps with Shell commands
|
|
type ShellHelper struct {
|
|
verbose bool
|
|
}
|
|
|
|
// NewShellHelper creates a new ShellHelper!
|
|
func NewShellHelper() *ShellHelper {
|
|
return &ShellHelper{}
|
|
}
|
|
|
|
// SetVerbose sets the verbose flag
|
|
func (sh *ShellHelper) SetVerbose() {
|
|
sh.verbose = true
|
|
}
|
|
|
|
// Run the given command
|
|
func (sh *ShellHelper) Run(command string, vars ...string) (stdout, stderr string, err error) {
|
|
cmd := exec.Command(command, vars...)
|
|
cmd.Env = append(os.Environ(), "GO111MODULE=on")
|
|
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()
|
|
}
|
|
return
|
|
}
|
|
|
|
// 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
|
|
cmd.Env = append(os.Environ(), "GO111MODULE=on")
|
|
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()
|
|
}
|
|
return
|
|
}
|