25 lines
567 B
Go
25 lines
567 B
Go
|
|
package util
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"os/exec"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Run executes a command and returns combined output or error.
|
||
|
|
func Run(cmd string, args ...string) error {
|
||
|
|
c := exec.Command(cmd, args...)
|
||
|
|
c.Stdout = nil
|
||
|
|
c.Stderr = nil
|
||
|
|
return c.Run()
|
||
|
|
}
|
||
|
|
|
||
|
|
// RunLogged returns stdout/stderr for logging while failing on error.
|
||
|
|
func RunLogged(cmd string, args ...string) (string, error) {
|
||
|
|
c := exec.Command(cmd, args...)
|
||
|
|
out, err := c.CombinedOutput()
|
||
|
|
if err != nil {
|
||
|
|
return string(out), fmt.Errorf("%s %v failed: %w: %s", cmd, args, err, string(out))
|
||
|
|
}
|
||
|
|
return string(out), nil
|
||
|
|
}
|