| package errdefs |
| |
| import ( |
| "context" |
| |
| cerrdefs "github.com/containerd/errdefs" |
| ) |
| |
| type errNotFound struct{ error } |
| |
| func (errNotFound) NotFound() {} |
| |
| func (e errNotFound) Cause() error { |
| return e.error |
| } |
| |
| func (e errNotFound) Unwrap() error { |
| return e.error |
| } |
| |
| // NotFound creates an [ErrNotFound] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrNotFound], |
| func NotFound(err error) error { |
| if err == nil || cerrdefs.IsNotFound(err) { |
| return err |
| } |
| return errNotFound{err} |
| } |
| |
| type errInvalidParameter struct{ error } |
| |
| func (errInvalidParameter) InvalidParameter() {} |
| |
| func (e errInvalidParameter) Cause() error { |
| return e.error |
| } |
| |
| func (e errInvalidParameter) Unwrap() error { |
| return e.error |
| } |
| |
| // InvalidParameter creates an [ErrInvalidParameter] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrInvalidParameter], |
| func InvalidParameter(err error) error { |
| if err == nil || cerrdefs.IsInvalidArgument(err) { |
| return err |
| } |
| return errInvalidParameter{err} |
| } |
| |
| type errConflict struct{ error } |
| |
| func (errConflict) Conflict() {} |
| |
| func (e errConflict) Cause() error { |
| return e.error |
| } |
| |
| func (e errConflict) Unwrap() error { |
| return e.error |
| } |
| |
| // Conflict creates an [ErrConflict] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrConflict], |
| func Conflict(err error) error { |
| if err == nil || cerrdefs.IsConflict(err) { |
| return err |
| } |
| return errConflict{err} |
| } |
| |
| type errUnauthorized struct{ error } |
| |
| func (errUnauthorized) Unauthorized() {} |
| |
| func (e errUnauthorized) Cause() error { |
| return e.error |
| } |
| |
| func (e errUnauthorized) Unwrap() error { |
| return e.error |
| } |
| |
| // Unauthorized creates an [ErrUnauthorized] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrUnauthorized], |
| func Unauthorized(err error) error { |
| if err == nil || cerrdefs.IsUnauthorized(err) { |
| return err |
| } |
| return errUnauthorized{err} |
| } |
| |
| type errUnavailable struct{ error } |
| |
| func (errUnavailable) Unavailable() {} |
| |
| func (e errUnavailable) Cause() error { |
| return e.error |
| } |
| |
| func (e errUnavailable) Unwrap() error { |
| return e.error |
| } |
| |
| // Unavailable creates an [ErrUnavailable] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrUnavailable], |
| func Unavailable(err error) error { |
| if err == nil || cerrdefs.IsUnavailable(err) { |
| return err |
| } |
| return errUnavailable{err} |
| } |
| |
| type errForbidden struct{ error } |
| |
| func (errForbidden) Forbidden() {} |
| |
| func (e errForbidden) Cause() error { |
| return e.error |
| } |
| |
| func (e errForbidden) Unwrap() error { |
| return e.error |
| } |
| |
| // Forbidden creates an [ErrForbidden] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrForbidden], |
| func Forbidden(err error) error { |
| if err == nil || cerrdefs.IsPermissionDenied(err) { |
| return err |
| } |
| return errForbidden{err} |
| } |
| |
| type errSystem struct{ error } |
| |
| func (errSystem) System() {} |
| |
| func (e errSystem) Cause() error { |
| return e.error |
| } |
| |
| func (e errSystem) Unwrap() error { |
| return e.error |
| } |
| |
| // System creates an [ErrSystem] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrSystem], |
| func System(err error) error { |
| if err == nil || cerrdefs.IsInternal(err) { |
| return err |
| } |
| return errSystem{err} |
| } |
| |
| type errNotModified struct{ error } |
| |
| func (errNotModified) NotModified() {} |
| |
| func (e errNotModified) Cause() error { |
| return e.error |
| } |
| |
| func (e errNotModified) Unwrap() error { |
| return e.error |
| } |
| |
| // NotModified creates an [ErrNotModified] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [NotModified], |
| func NotModified(err error) error { |
| if err == nil || cerrdefs.IsNotModified(err) { |
| return err |
| } |
| return errNotModified{err} |
| } |
| |
| type errNotImplemented struct{ error } |
| |
| func (errNotImplemented) NotImplemented() {} |
| |
| func (e errNotImplemented) Cause() error { |
| return e.error |
| } |
| |
| func (e errNotImplemented) Unwrap() error { |
| return e.error |
| } |
| |
| // NotImplemented creates an [ErrNotImplemented] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrNotImplemented], |
| func NotImplemented(err error) error { |
| if err == nil || cerrdefs.IsNotImplemented(err) { |
| return err |
| } |
| return errNotImplemented{err} |
| } |
| |
| type errUnknown struct{ error } |
| |
| func (errUnknown) Unknown() {} |
| |
| func (e errUnknown) Cause() error { |
| return e.error |
| } |
| |
| func (e errUnknown) Unwrap() error { |
| return e.error |
| } |
| |
| // Unknown creates an [ErrUnknown] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrUnknown], |
| func Unknown(err error) error { |
| if err == nil || cerrdefs.IsUnknown(err) { |
| return err |
| } |
| return errUnknown{err} |
| } |
| |
| type errCancelled struct{ error } |
| |
| func (errCancelled) Cancelled() {} |
| |
| func (e errCancelled) Cause() error { |
| return e.error |
| } |
| |
| func (e errCancelled) Unwrap() error { |
| return e.error |
| } |
| |
| // Cancelled creates an [ErrCancelled] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrCancelled], |
| func Cancelled(err error) error { |
| if err == nil || cerrdefs.IsCanceled(err) { |
| return err |
| } |
| return errCancelled{err} |
| } |
| |
| type errDeadline struct{ error } |
| |
| func (errDeadline) DeadlineExceeded() {} |
| |
| func (e errDeadline) Cause() error { |
| return e.error |
| } |
| |
| func (e errDeadline) Unwrap() error { |
| return e.error |
| } |
| |
| // Deadline creates an [ErrDeadline] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrDeadline], |
| func Deadline(err error) error { |
| if err == nil || cerrdefs.IsDeadlineExceeded(err) { |
| return err |
| } |
| return errDeadline{err} |
| } |
| |
| type errDataLoss struct{ error } |
| |
| func (errDataLoss) DataLoss() {} |
| |
| func (e errDataLoss) Cause() error { |
| return e.error |
| } |
| |
| func (e errDataLoss) Unwrap() error { |
| return e.error |
| } |
| |
| // DataLoss creates an [ErrDataLoss] error from the given error. |
| // It returns the error as-is if it is either nil (no error) or already implements |
| // [ErrDataLoss], |
| func DataLoss(err error) error { |
| if err == nil || cerrdefs.IsDataLoss(err) { |
| return err |
| } |
| return errDataLoss{err} |
| } |
| |
| // FromContext returns the error class from the passed in context |
| func FromContext(ctx context.Context) error { |
| e := ctx.Err() |
| if e == nil { |
| return nil |
| } |
| |
| if e == context.Canceled { |
| return Cancelled(e) |
| } |
| if e == context.DeadlineExceeded { |
| return Deadline(e) |
| } |
| return Unknown(e) |
| } |