package kmip import ( "errors" "fmt" "github.com/ansel1/merry" "github.com/gemalto/kmip-go/kmip14" ) func Details(err error) string { return merry.Details(err) } var ErrInvalidTag = errors.New("invalid tag") type errKey int const ( errorKeyResultReason errKey = iota ) //nolint:gochecknoinits func init() { merry.RegisterDetail("Result Reason", errorKeyResultReason) } func WithResultReason(err error, rr kmip14.ResultReason) error { return merry.WithValue(err, errorKeyResultReason, rr) } func GetResultReason(err error) kmip14.ResultReason { v := merry.Value(err, errorKeyResultReason) switch t := v.(type) { case nil: return kmip14.ResultReason(0) case kmip14.ResultReason: return t default: panic(fmt.Sprintf("err result reason attribute's value was wrong type, expected ResultReason, got %T", v)) } }