792b4dba2c
* update github.com/blevesearch/bleve v2.0.2 -> v2.0.3 * github.com/denisenkom/go-mssqldb v0.9.0 -> v0.10.0 * github.com/editorconfig/editorconfig-core-go v2.4.1 -> v2.4.2 * github.com/go-chi/cors v1.1.1 -> v1.2.0 * github.com/go-git/go-billy v5.0.0 -> v5.1.0 * github.com/go-git/go-git v5.2.0 -> v5.3.0 * github.com/go-ldap/ldap v3.2.4 -> v3.3.0 * github.com/go-redis/redis v8.6.0 -> v8.8.2 * github.com/go-sql-driver/mysql v1.5.0 -> v1.6.0 * github.com/go-swagger/go-swagger v0.26.1 -> v0.27.0 * github.com/lib/pq v1.9.0 -> v1.10.1 * github.com/mattn/go-sqlite3 v1.14.6 -> v1.14.7 * github.com/go-testfixtures/testfixtures v3.5.0 -> v3.6.0 * github.com/issue9/identicon v1.0.1 -> v1.2.0 * github.com/klauspost/compress v1.11.8 -> v1.12.1 * github.com/mgechev/revive v1.0.3 -> v1.0.6 * github.com/microcosm-cc/bluemonday v1.0.7 -> v1.0.8 * github.com/niklasfasching/go-org v1.4.0 -> v1.5.0 * github.com/olivere/elastic v7.0.22 -> v7.0.24 * github.com/pelletier/go-toml v1.8.1 -> v1.9.0 * github.com/prometheus/client_golang v1.9.0 -> v1.10.0 * github.com/xanzy/go-gitlab v0.44.0 -> v0.48.0 * github.com/yuin/goldmark v1.3.3 -> v1.3.5 * github.com/6543/go-version v1.2.4 -> v1.3.1 * do github.com/lib/pq v1.10.0 -> v1.10.1 again ...
68 lines
2 KiB
Markdown
Vendored
68 lines
2 KiB
Markdown
Vendored
# Versioning Library for Go
|
|
![Build Status](https://github.com/6543/go-version/workflows/Release/badge.svg)
|
|
[![License: MPL](https://img.shields.io/badge/License-MPL2-red.svg)](https://opensource.org/licenses/MPL-2.0)
|
|
[![GoDoc](https://godoc.org/github.com/6543/go-version?status.svg)](https://godoc.org/github.com/6543/go-version)
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/6543/go-version)](https://goreportcard.com/report/github.com/6543/go-version)
|
|
|
|
go-version is a library for parsing versions and version constraints,
|
|
and verifying versions against a set of constraints. go-version
|
|
can sort a collection of versions properly, handles prerelease/beta
|
|
versions, can increment versions, etc.
|
|
|
|
Versions used with go-version must follow [SemVer](http://semver.org/).
|
|
|
|
## Installation and Usage
|
|
|
|
Package documentation can be found on
|
|
[GoDoc](http://godoc.org/github.com/6543/go-version).
|
|
|
|
Installation can be done with a normal `go get`:
|
|
|
|
```
|
|
$ go get github.com/6543/go-version
|
|
```
|
|
|
|
#### Version Parsing and Comparison
|
|
|
|
```go
|
|
v1, err := version.NewVersion("1.2")
|
|
v2, err := version.NewVersion("1.5+metadata")
|
|
|
|
// Comparison example. There is also GreaterThan, Equal, and just
|
|
// a simple Compare that returns an int allowing easy >=, <=, etc.
|
|
if v1.LessThan(v2) {
|
|
fmt.Printf("%s is less than %s", v1, v2)
|
|
}
|
|
```
|
|
|
|
#### Version Constraints
|
|
|
|
```go
|
|
v1, err := version.NewVersion("1.2")
|
|
|
|
// Constraints example.
|
|
constraints, err := version.NewConstraint(">= 1.0, < 1.4")
|
|
if constraints.Check(v1) {
|
|
fmt.Printf("%s satisfies constraints %s", v1, constraints)
|
|
}
|
|
```
|
|
|
|
#### Version Sorting
|
|
|
|
```go
|
|
versionsRaw := []string{"1.1", "0.7.1", "1.4-beta", "1.4", "2"}
|
|
versions := make([]*version.Version, len(versionsRaw))
|
|
for i, raw := range versionsRaw {
|
|
v, _ := version.NewVersion(raw)
|
|
versions[i] = v
|
|
}
|
|
|
|
// After this, the versions are properly sorted
|
|
sort.Sort(version.Collection(versions))
|
|
```
|
|
|
|
## Issues and Contributing
|
|
|
|
If you find an issue with this library, please report an issue. If you'd
|
|
like, we welcome any contributions. Fork this library and submit a pull
|
|
request.
|