SpecVersion is the latest fully supported spec version of semver
var SpecVersion = Version{ Major: 2, Minor: 0, Patch: 0, }
func NewBuildVersion(s string) (string, error)
NewBuildVersion creates a new valid build version
func Sort(versions []Version)
Sort sorts a slice of versions
PRVersion represents a PreRelease Version
type PRVersion struct { VersionStr string VersionNum uint64 IsNum bool }
func NewPRVersion(s string) (PRVersion, error)
NewPRVersion creates a new valid prerelease version
func (v PRVersion) Compare(o PRVersion) int
Compare compares two PreRelease Versions v and o: -1 == v is less than o 0 == v is equal to o 1 == v is greater than o
func (v PRVersion) IsNumeric() bool
IsNumeric checks if prerelease-version is numeric
func (v PRVersion) String() string
PreRelease version to string
Range represents a range of versions. A Range can be used to check if a Version satisfies it:
range, err := semver.ParseRange(">1.0.0 <2.0.0") range(semver.MustParse("1.1.1") // returns true
type Range func(Version) bool
func MustParseRange(s string) Range
MustParseRange is like ParseRange but panics if the range cannot be parsed.
func ParseRange(s string) (Range, error)
ParseRange parses a range and returns a Range. If the range could not be parsed an error is returned.
Valid ranges are:
A Range can consist of multiple ranges separated by space: Ranges can be linked by logical AND:
Ranges can also be linked by logical OR:
AND has a higher precedence than OR. It's not possible to use brackets.
Ranges can be combined by both AND and OR
func (rf Range) AND(f Range) Range
AND combines the existing Range with another Range using logical AND.
func (rf Range) OR(f Range) Range
OR combines the existing Range with another Range using logical OR.
Version represents a semver compatible version
type Version struct { Major uint64 Minor uint64 Patch uint64 Pre []PRVersion Build []string //No Precendence }
func Make(s string) (Version, error)
Make is an alias for Parse, parses version string and returns a validated Version or error
func MustParse(s string) Version
MustParse is like Parse but panics if the version cannot be parsed.
func New(s string) (vp *Version, err error)
New is an alias for Parse and returns a pointer, parses version string and returns a validated Version or error
func Parse(s string) (Version, error)
Parse parses version string and returns a validated Version or error
func ParseTolerant(s string) (Version, error)
ParseTolerant allows for certain version specifications that do not strictly adhere to semver specs to be parsed by this library. It does so by normalizing versions before passing them to Parse(). It currently trims spaces, removes a "v" prefix, and adds a 0 patch number to versions with only major and minor components specified
func (v Version) Compare(o Version) int
Compare compares Versions v to o: -1 == v is less than o 0 == v is equal to o 1 == v is greater than o
func (v Version) EQ(o Version) bool
EQ checks if v is equal to o.
func (v Version) Equals(o Version) bool
Equals checks if v is equal to o.
func (v Version) GE(o Version) bool
GE checks if v is greater than or equal to o.
func (v Version) GT(o Version) bool
GT checks if v is greater than o.
func (v Version) GTE(o Version) bool
GTE checks if v is greater than or equal to o.
func (v Version) LE(o Version) bool
LE checks if v is less than or equal to o.
func (v Version) LT(o Version) bool
LT checks if v is less than o.
func (v Version) LTE(o Version) bool
LTE checks if v is less than or equal to o.
func (v Version) MarshalJSON() ([]byte, error)
MarshalJSON implements the encoding/json.Marshaler interface.
func (v Version) NE(o Version) bool
NE checks if v is not equal to o.
func (v *Version) Scan(src interface{}) (err error)
Scan implements the database/sql.Scanner interface.
func (v Version) String() string
Version to string
func (v *Version) UnmarshalJSON(data []byte) (err error)
UnmarshalJSON implements the encoding/json.Unmarshaler interface.
func (v Version) Validate() error
Validate validates v and returns error in case
func (v Version) Value() (driver.Value, error)
Value implements the database/sql/driver.Valuer interface.
Versions represents multiple versions.
type Versions []Version
func (s Versions) Len() int
Len returns length of version collection
func (s Versions) Less(i, j int) bool
Less checks if version at index i is less than version at index j
func (s Versions) Swap(i, j int)
Swap swaps two versions inside the collection by its indices