34 lines
601 B
Go
34 lines
601 B
Go
package shell
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
// OpenBrowser opens the specified URL in the default browser of the user
|
|
func OpenBrowser(url string) error {
|
|
return getBrowserCmd(url).Start()
|
|
}
|
|
|
|
// Run will kick off a shell task and pipe the results to the respective std pipes
|
|
func Run(cmd string, args ...string) error {
|
|
c := exec.Command(cmd, args...)
|
|
stderr, err := c.StderrPipe()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
go func() {
|
|
io.Copy(os.Stderr, stderr)
|
|
}()
|
|
|
|
stdout, err := c.StdoutPipe()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
go func() {
|
|
io.Copy(os.Stdout, stdout)
|
|
}()
|
|
return c.Run()
|
|
}
|