From 364d666eb6918ac30eae6379ae18fa91879de459 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 7 Feb 2025 11:22:11 -0600 Subject: add RunVerbose() RunVerboseOnError() --- cmd.go | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/cmd.go b/cmd.go index 48580c5..eb6604f 100644 --- a/cmd.go +++ b/cmd.go @@ -2,6 +2,7 @@ package shell import ( "errors" + "fmt" "os" "time" @@ -241,3 +242,49 @@ func RemoveFirstElement(slice []string) (string, []string) { } return slice[0], slice[1:] // Return the slice without the first element } + +func RunVerbose(cmd []string) (*cmd.Status, error) { + pwd, _ := os.Getwd() + log.Info("Running:", pwd, cmd) + r, err := RunStrict(cmd) + if err != nil { + log.Info("Error", cmd, err) + } + for _, line := range r.Stdout { + log.Info(line) + } + for _, line := range r.Stderr { + log.Info(line) + } + return r, err +} + +func RunVerboseOnError(cmd []string) (*cmd.Status, error) { + r, err := RunStrict(cmd) + if err == nil { + return r, err + } + pwd, _ := os.Getwd() + log.Info("Run Error:", pwd, cmd, err) + for _, line := range r.Stdout { + log.Info(line) + } + for _, line := range r.Stderr { + log.Info(line) + } + return r, err +} + +func RunStrict(cmd []string) (*cmd.Status, error) { + pwd, _ := os.Getwd() + result := PathRunQuiet(pwd, cmd) + if result.Error != nil { + log.Warn(pwd, cmd, "wow. golang is cool. an os.Error:", result.Error) + return &result, result.Error + } + if result.Exit != 0 { + // log.Warn(cmd, "failed with", result.Exit, repo.GetGoPath()) + return &result, errors.New(fmt.Sprint(cmd, "failed with", result.Exit)) + } + return &result, nil +} -- cgit v1.2.3