# Packages
No description provided by the author
# README
go-semver
Golang library to parse and compare v2.0.0 semantic version numbers.
I built this package for my A-Level Computer Science NEA and never ended up using it. It's a thoroughly-tested library for parsing and comparing semantic versions.
This library is complicant with version 2.0.0 of the Semantic Versioning specification, has no external dependencies and is JSON and SQL ready.
Installing
go get -u github.com/codemicro/go-semver/semver
Usage
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
.