-
Notifications
You must be signed in to change notification settings - Fork 4
/
errors.go
29 lines (26 loc) · 865 Bytes
/
errors.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package utils
import (
"errors"
"fmt"
"os/exec"
)
// WrapExitError checks whether `err` is an *exec.ExitError and wraps it in a nice way
// Includes the Stderr output in the error message.
func WrapExitError(err error) error {
var exiterr *exec.ExitError
if errors.As(err, &exiterr) {
return fmt.Errorf("exit code %d - %s", exiterr.ExitCode(), string(exiterr.Stderr))
}
return err
}
// WrapExitErrorf checks whether `err` is an *exec.ExitError and wraps it in a nice way
// Instead of the stderr output, this function allows you to specify your own message
// and possible formatting arguments.
func WrapExitErrorf(err error, message string, args ...interface{}) error {
var exiterr *exec.ExitError
if errors.As(err, &exiterr) {
msg := fmt.Sprintf(message, args...)
return fmt.Errorf("exit code %d - %s", exiterr.ExitCode(), msg)
}
return err
}