gh-ost/vendor/github.com/pingcap/errors/juju_adaptor.go
Tim Vaillancourt 47d49c6b92
Add go mod (#935)
* Add a go.mod file

* run go mod vendor again

* Move to a well-supported ini file reader

* Remove GO111MODULE=off

* Use go 1.16

* Rename github.com/outbrain/golib -> github.com/openark/golib

* Remove *.go-e files

* Fix for `strconv.ParseInt: parsing "": invalid syntax` error

* Add test for '[osc]' section

Co-authored-by: Nate Wernimont <nate.wernimont@workiva.com>
2021-06-24 20:19:37 +02:00

101 lines
2.4 KiB
Go

package errors
import (
"fmt"
"strings"
)
// ==================== juju adaptor start ========================
// Trace just calls AddStack.
func Trace(err error) error {
return AddStack(err)
}
// Annotate adds a message and ensures there is a stack trace.
func Annotate(err error, message string) error {
if err == nil {
return nil
}
hasStack := HasStack(err)
err = &withMessage{
cause: err,
msg: message,
causeHasStack: hasStack,
}
if hasStack {
return err
}
return &withStack{
err,
callers(),
}
}
// Annotatef adds a message and ensures there is a stack trace.
func Annotatef(err error, format string, args ...interface{}) error {
if err == nil {
return nil
}
hasStack := HasStack(err)
err = &withMessage{
cause: err,
msg: fmt.Sprintf(format, args...),
causeHasStack: hasStack,
}
if hasStack {
return err
}
return &withStack{
err,
callers(),
}
}
// ErrorStack will format a stack trace if it is available, otherwise it will be Error()
// If the error is nil, the empty string is returned
// Note that this just calls fmt.Sprintf("%+v", err)
func ErrorStack(err error) string {
if err == nil {
return ""
}
return fmt.Sprintf("%+v", err)
}
// IsNotFound reports whether err was not found error.
func IsNotFound(err error) bool {
return strings.Contains(err.Error(), "not found")
}
// NotFoundf represents an error with not found message.
func NotFoundf(format string, args ...interface{}) error {
return Errorf(format+" not found", args...)
}
// BadRequestf represents an error with bad request message.
func BadRequestf(format string, args ...interface{}) error {
return Errorf(format+" bad request", args...)
}
// NotSupportedf represents an error with not supported message.
func NotSupportedf(format string, args ...interface{}) error {
return Errorf(format+" not supported", args...)
}
// NotValidf represents an error with not valid message.
func NotValidf(format string, args ...interface{}) error {
return Errorf(format+" not valid", args...)
}
// IsAlreadyExists reports whether err was already exists error.
func IsAlreadyExists(err error) bool {
return strings.Contains(err.Error(), "already exists")
}
// AlreadyExistsf represents an error with already exists message.
func AlreadyExistsf(format string, args ...interface{}) error {
return Errorf(format+" already exists", args...)
}
// ==================== juju adaptor end ========================