# README
semver
Version 2.0.0 compliant semantic versioning library, with parsing and comparison and no external dependencies. JSON and SQL ready.
Parse
v, err := semver.Parse("1.6.3-alpha")
if err != nil {
// handle err
}
// v == &semver.Version{Major:1, Minor:6, Patch:3, Prerelease:[]string{"alpha"}, Build:[]string(nil), Stable:true}
vs, _ := semver.ParseMultiple([]string{"1.0.0", "1.1.0"})
Validate
var valid bool
if _, err := semver.Parse("1.0.0"); err == nil {
valid = true
}
Compare
a, _ := semver.Parse("1.0.0")
b, _ := semver.Parse("1.0.1")
n := a.CompareTo(b) // n == 1 means a greater than b, n == 0 means a equal to b, n == -1 means a less than b
Filtering
vers, _ := semver.ParseMultiple([]string{"1.0.0", "2.0.0", "2.1.0", "3.0.0"})
v, err := semver.Filter("^2.0.0", vers)
if err != nil {
// handle err
}
// v == [2.0.0, 2.1.0]
Specifying version ranges
^
- include everything greater than or equal to the stated version that doesn't increment the first non-zero item of the version core- eg
^2.1.0
includes version2.1.0
and any newer2.x.x
versions - eg
^0.3.0
will match only versions0.3.0
and any newer0.3.x
versions - For example,
^2.2.1
can be expanded out as>=2.2.1 <3.0.0
- eg
~
- include everything greater than or equal to the stated version in the current minor range- eg
~2.2.0
will match version2.2.0
and any newer2.2.x
but not2.3.x
- eg
>
<
=
>=
<=
for version comparisons - specify a range of versions- eg
>2.1.0
matches anything greater than2.1.0
- eg
||
- include multiple sets of version specifiers- eg
^2.0.0 <2.2.0 || > 2.3.0
matches versions that satisfy both^2.0.0 <2.2.0
and>2.3.0
- eg
Version numbers must be in their complete form, for example 2
will not work - it must be 2.0.0
.