Documentation ¶
Overview ¶
Copyright (c) HashiCorp, Inc. SPDX-License-Identifier: MPL-2.0
Index ¶
- Constants
- type Collection
- type Constraint
- type Constraints
- type Version
- func (v *Version) Compare(other *Version) int
- func (v *Version) Core() *Version
- func (v *Version) Equal(o *Version) bool
- func (v *Version) GreaterThan(o *Version) bool
- func (v *Version) GreaterThanOrEqual(o *Version) bool
- func (v *Version) LessThan(o *Version) bool
- func (v *Version) LessThanOrEqual(o *Version) bool
- func (v *Version) MarshalText() ([]byte, error)
- func (v *Version) Metadata() string
- func (v *Version) Original() string
- func (v *Version) Prerelease() string
- func (v *Version) Scan(src interface{}) error
- func (v *Version) Segments() []int
- func (v *Version) Segments64() []int64
- func (v *Version) String() string
- func (v *Version) UnmarshalText(b []byte) error
- func (v *Version) Value() (driver.Value, error)
Constants ¶
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\-~]+)*))?` + `?` )
The raw regular expression string used for testing the validity of a version.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Collection ¶
type Collection []*Version
Collection is a type that implements the sort.Interface interface so that versions can be sorted.
func (Collection) Len ¶
func (v Collection) Len() int
func (Collection) Less ¶
func (v Collection) Less(i, j int) bool
func (Collection) Swap ¶
func (v Collection) Swap(i, j int)
type Constraint ¶
type Constraint struct {
// contains filtered or unexported fields
}
Constraint represents a single constraint for a version, such as ">= 1.0".
func (*Constraint) Check ¶
func (c *Constraint) Check(v *Version) bool
Check tests if a constraint is validated by the given version.
func (*Constraint) Equals ¶
func (c *Constraint) Equals(con *Constraint) bool
func (*Constraint) Prerelease ¶
func (c *Constraint) Prerelease() bool
Prerelease returns true if the version underlying this constraint contains a prerelease field.
func (*Constraint) String ¶
func (c *Constraint) String() string
type Constraints ¶
type Constraints []*Constraint
Constraints is a slice of constraints. We make a custom type so that we can add methods to it.
func MustConstraints ¶
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 ¶
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 (Constraints) Check ¶
func (cs Constraints) Check(v *Version) bool
Check tests if a version satisfies all the constraints.
func (Constraints) Equals ¶
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 (Constraints) Len ¶
func (cs Constraints) Len() int
func (Constraints) Less ¶
func (cs Constraints) Less(i, j int) bool
func (Constraints) String ¶
func (cs Constraints) String() string
Returns the string format of the constraints
func (Constraints) Swap ¶
func (cs Constraints) Swap(i, j int)
type Version ¶
type Version struct {
// contains filtered or unexported fields
}
Version represents a single version.
func Must ¶
Must is a helper that wraps a call to a function returning (*Version, error) and panics if error is non-nil.
func NewSemver ¶
NewSemver parses the given version and returns a new Version that adheres strictly to SemVer specs https://semver.org/
func NewVersion ¶
NewVersion parses the given version and returns a new Version.
func (*Version) Compare ¶
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 (*Version) Core ¶
Core returns a new version constructed from only the MAJOR.MINOR.PATCH segments of the version, without prerelease or metadata.
func (*Version) GreaterThan ¶
GreaterThan tests if this version is greater than another version.
func (*Version) GreaterThanOrEqual ¶
GreaterThanOrEqual tests if this version is greater than or equal to another version.
func (*Version) LessThanOrEqual ¶
LessThanOrEqual tests if this version is less than or equal to another version.
func (*Version) MarshalText ¶
MarshalText implements encoding.TextMarshaler interface.
func (*Version) Metadata ¶
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 (*Version) Original ¶
Original returns the original parsed version as-is, including any potential whitespace, `v` prefix, etc.
func (*Version) Prerelease ¶
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 (*Version) Segments ¶
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 (*Version) Segments64 ¶
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 (*Version) 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 (*Version) UnmarshalText ¶
UnmarshalText implements encoding.TextUnmarshaler interface.