A go-language package for parsing, comparing, sorting and constraint-checking k0s version numbers. The API is modeled after hashicorp/go-version.
K0s versioning follows semver v2.0 with the exception that there is a special metadata field for the k0s build version like v1.23.4+k0s.1
which affects precedence while sorting or comparing version numbers.
The library should work fine for performing the same operations on non-k0s version numbers as long as there are maximum of 3 numeric segments (1.2.3), but this is not a priority. There are no dependencies.
import ( "fmt" "github.com/k0sproject/version" ) func main() { a := version.MustParse("1.23.3+k0s.1") b := version.MustParse("1.23.3+k0s.2") fmt.Printf("a is greater than b: %t\n", a.GreaterThan(b)) fmt.Printf("a is less than b: %t\n", a.LessThan(b)) fmt.Printf("a is equal to b: %t\n", a.Equal(b)) }
Outputs:
a is greater than b: false a is less than b: true a is equal to b: false
import ( "fmt" "github.com/k0sproject/version" ) func main() { v := version.MustParse("1.23.3+k0s.1") c := version.MustConstraint("> 1.23") fmt.Printf("constraint %s satisfied by %s: %t\n", c, v, c.Check(v)) }
Outputs:
constraint > 1.2.3 satisfied by v1.23.3+k0s.1: true
import ( "fmt" "sort" "github.com/k0sproject/version" ) func main() { versions := []*version.Version{ version.MustParse("v1.23.3+k0s.2"), version.MustParse("1.23.2+k0s.3"), version.MustParse("1.23.3+k0s.1"), } fmt.Println("Before:") for _, v range versions { fmt.Println(v) } sort.Sort(versions) fmt.Println("After:") for _, v range versions { fmt.Println(v) } }
Outputs:
Before: v1.23.3+k0s.2 v1.23.2+k0s.3 v1.23.3+k0s.1 After: v1.23.2+k0s.3 v1.23.3+k0s.1 v1.23.3+k0s.2
import ( "fmt" "github.com/k0sproject/version" ) func main() { latest, err := version.Latest() if err != nil { panic(err) } fmt.Printf("Latest k0s version is: %s\n", latest) }
A command-line interface to the package. Can be used to sort lists of versions or to obtain the latest version number.
Usage: k0s_sort [options] [filename ...] -l only print the latest version -o print the latest version from online -s omit prerelease versions -v print k0s_sort version