The raw regular expression string used for testing the validity of a version.
const ( VersionRegexpRaw string = `v?([0-9]+(\.[0-9]+)*?)` + `(-([0-9]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)|(-?([A-Za-z\-~]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)))?` + `(\+([0-9A-Za-z\-~]+(\.[0-9A-Za-z\-~]+)*))?` + `?` // SemverRegexpRaw requires a separator between version and prerelease SemverRegexpRaw string = `v?([0-9]+(\.[0-9]+)*?)` + `(-([0-9]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)|(-([A-Za-z\-~]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)))?` + `(\+([0-9A-Za-z\-~]+(\.[0-9A-Za-z\-~]+)*))?` + `?` )
Collection is a type that implements the sort.Interface interface so that versions can be sorted.
type Collection []*Version
func (v Collection) Len() int
func (v Collection) Less(i, j int) bool
func (v Collection) Swap(i, j int)
Constraint represents a single constraint for a version, such as ">= 1.0".
type Constraint struct {
// contains filtered or unexported fields
}
func (c *Constraint) Check(v *Version) bool
Check tests if a constraint is validated by the given version.
func (c *Constraint) Equals(con *Constraint) bool
func (c *Constraint) Prerelease() bool
Prerelease returns true if the version underlying this constraint contains a prerelease field.
func (c *Constraint) String() string
Constraints is a slice of constraints. We make a custom type so that we can add methods to it.
type Constraints []*Constraint
func MustConstraints(c Constraints, err error) Constraints
MustConstraints is a helper that wraps a call to a function returning (Constraints, error) and panics if error is non-nil.
func NewConstraint(v string) (Constraints, error)
NewConstraint will parse one or more constraints from the given constraint string. The string must be a comma-separated list of constraints.
func (cs Constraints) Check(v *Version) bool
Check tests if a version satisfies all the constraints.
func (cs Constraints) Equals(c Constraints) bool
Equals compares Constraints with other Constraints for equality. This may not represent logical equivalence of compared constraints. e.g. even though '>0.1,>0.2' is logically equivalent to '>0.2' it is *NOT* treated as equal.
Missing operator is treated as equal to '=', whitespaces are ignored and constraints are sorted before comaparison.
func (cs Constraints) Len() int
func (cs Constraints) Less(i, j int) bool
func (cs Constraints) String() string
Returns the string format of the constraints
func (cs Constraints) Swap(i, j int)
Version represents a single version.
type Version struct {
// contains filtered or unexported fields
}
func Must(v *Version, err error) *Version
Must is a helper that wraps a call to a function returning (*Version, error) and panics if error is non-nil.
func NewSemver(v string) (*Version, error)
NewSemver parses the given version and returns a new Version that adheres strictly to SemVer specs https://semver.org/
func NewVersion(v string) (*Version, error)
NewVersion parses the given version and returns a new Version.
func (v *Version) Compare(other *Version) int
Compare compares this version to another version. This returns -1, 0, or 1 if this version is smaller, equal, or larger than the other version, respectively.
If you want boolean results, use the LessThan, Equal, GreaterThan, GreaterThanOrEqual or LessThanOrEqual methods.
func (v *Version) Core() *Version
Core returns a new version constructed from only the MAJOR.MINOR.PATCH segments of the version, without prerelease or metadata.
func (v *Version) Equal(o *Version) bool
Equal tests if two versions are equal.
func (v *Version) GreaterThan(o *Version) bool
GreaterThan tests if this version is greater than another version.
func (v *Version) GreaterThanOrEqual(o *Version) bool
GreaterThanOrEqual tests if this version is greater than or equal to another version.
func (v *Version) LessThan(o *Version) bool
LessThan tests if this version is less than another version.
func (v *Version) LessThanOrEqual(o *Version) bool
LessThanOrEqual tests if this version is less than or equal to another version.
func (v *Version) MarshalText() ([]byte, error)
MarshalText implements encoding.TextMarshaler interface.
func (v *Version) Metadata() string
Metadata returns any metadata that was part of the version string.
Metadata is anything that comes after the "+" in the version. For example, with "1.2.3+beta", the metadata is "beta".
func (v *Version) Original() string
Original returns the original parsed version as-is, including any potential whitespace, `v` prefix, etc.
func (v *Version) Prerelease() string
Prerelease returns any prerelease data that is part of the version, or blank if there is no prerelease data.
Prerelease information is anything that comes after the "-" in the version (but before any metadata). For example, with "1.2.3-beta", the prerelease information is "beta".
func (v *Version) Segments() []int
Segments returns the numeric segments of the version as a slice of ints.
This excludes any metadata or pre-release information. For example, for a version "1.2.3-beta", segments will return a slice of 1, 2, 3.
func (v *Version) Segments64() []int64
Segments64 returns the numeric segments of the version as a slice of int64s.
This excludes any metadata or pre-release information. For example, for a version "1.2.3-beta", segments will return a slice of 1, 2, 3.
func (v *Version) String() string
String returns the full version string included pre-release and metadata information.
This value is rebuilt according to the parsed segments and other information. Therefore, ambiguities in the version string such as prefixed zeroes (1.04.0 => 1.4.0), `v` prefix (v1.0.0 => 1.0.0), and missing parts (1.0 => 1.0.0) will be made into a canonicalized form as shown in the parenthesized examples.
func (v *Version) UnmarshalText(b []byte) error
UnmarshalText implements encoding.TextUnmarshaler interface.