2019-04-23 04:50:31 -05:00
|
|
|
package errutil
|
|
|
|
|
2019-05-15 05:20:17 -05:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"golang.org/x/xerrors"
|
|
|
|
)
|
2019-04-23 04:50:31 -05:00
|
|
|
|
|
|
|
// Wrap is a simple wrapper around Errorf that is doing error wrapping. You can read how that works in
|
|
|
|
// https://godoc.org/golang.org/x/xerrors#Errorf but its API is very implicit which is a reason for this wrapper.
|
|
|
|
// There is also a discussion (https://github.com/golang/go/issues/29934) where many comments make arguments for such
|
|
|
|
// wrapper so hopefully it will be added in the standard lib later.
|
|
|
|
func Wrap(message string, err error) error {
|
2019-05-15 05:20:17 -05:00
|
|
|
if err == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2019-04-23 04:50:31 -05:00
|
|
|
return xerrors.Errorf("%v: %w", message, err)
|
|
|
|
}
|
2019-05-15 05:20:17 -05:00
|
|
|
|
|
|
|
// Wrapf is a simple wrapper around Errorf that is doing error wrapping
|
|
|
|
// Wrapf allows you to send a format and args instead of just a message.
|
|
|
|
func Wrapf(err error, message string, a ...interface{}) error {
|
|
|
|
if err == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return Wrap(fmt.Sprintf(message, a...), err)
|
|
|
|
}
|