metis/pkg/util/run.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
}