38 lines
727 B
Go
38 lines
727 B
Go
package version
|
|
|
|
import "fmt"
|
|
|
|
// Version error.
|
|
var (
|
|
ErrInvalidVersion = Error{Message: "invalid version %q"}
|
|
)
|
|
|
|
// Error represents a version error.
|
|
type Error struct {
|
|
Message string
|
|
Version string
|
|
}
|
|
|
|
// Error retrieves the message of a REST API error.
|
|
func (e Error) Error() string {
|
|
return fmt.Sprintf(e.Message, e.Version)
|
|
}
|
|
|
|
// Is determines whether the Error is an instance of the target.
|
|
// https://pkg.go.dev/errors#Is
|
|
//
|
|
// This implementation does not compare versions.
|
|
func (e Error) Is(target error) bool {
|
|
if t, ok := target.(Error); ok {
|
|
return t.Message == e.Message
|
|
}
|
|
return false
|
|
}
|
|
|
|
func invalid(version string) Error {
|
|
return Error{
|
|
Message: ErrInvalidVersion.Message,
|
|
Version: version,
|
|
}
|
|
}
|