|
|
|
@ -1,18 +1,22 @@ |
|
|
|
semver for golang [](https://drone.io/github.com/blang/semver/latest) |
|
|
|
semver for golang [](https://drone.io/github.com/blang/semver/latest) [](https://godoc.org/github.com/blang/semver) |
|
|
|
====== |
|
|
|
|
|
|
|
semver is a Semantic Versioning library written in golang. It fully covers spec version `2.0.0`. |
|
|
|
|
|
|
|
Usage |
|
|
|
----- |
|
|
|
```bash |
|
|
|
$ go get github.com/blang/semver |
|
|
|
``` |
|
|
|
|
|
|
|
$ go get github.com/blang/semver |
|
|
|
|
|
|
|
import github.com/blang/semver |
|
|
|
v1, err := semver.New("1.0.0-beta") |
|
|
|
v2, err := semver.New("2.0.0-beta") |
|
|
|
v1.Compare(v2) |
|
|
|
```go |
|
|
|
import github.com/blang/semver |
|
|
|
v1, err := semver.New("1.0.0-beta") |
|
|
|
v2, err := semver.New("2.0.0-beta") |
|
|
|
v1.Compare(v2) |
|
|
|
``` |
|
|
|
|
|
|
|
Also check the [GoDocs](http://godoc.org/github.com/blang/semver). |
|
|
|
|
|
|
|
Why should I use this lib? |
|
|
|
----- |
|
|
|
@ -40,57 +44,58 @@ Example |
|
|
|
|
|
|
|
Have a look at full examples in [examples/main.go](examples/main.go) |
|
|
|
|
|
|
|
import github.com/blang/semver |
|
|
|
|
|
|
|
v, err := semver.New("0.0.1-alpha.preview+123.github") |
|
|
|
fmt.Printf("Major: %d\n", v.Major) |
|
|
|
fmt.Printf("Minor: %d\n", v.Minor) |
|
|
|
fmt.Printf("Patch: %d\n", v.Patch) |
|
|
|
fmt.Printf("Pre: %s\n", v.Pre) |
|
|
|
fmt.Printf("Build: %s\n", v.Build) |
|
|
|
|
|
|
|
// Prerelease versions array |
|
|
|
if len(v.Pre) > 0 { |
|
|
|
fmt.Println("Prerelease versions:") |
|
|
|
for i, pre := range v.Pre { |
|
|
|
fmt.Printf("%d: %q\n", i, pre) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Build meta data array |
|
|
|
if len(v.Build) > 0 { |
|
|
|
fmt.Println("Build meta data:") |
|
|
|
for i, build := range v.Build { |
|
|
|
fmt.Printf("%d: %q\n", i, build) |
|
|
|
} |
|
|
|
```go |
|
|
|
import github.com/blang/semver |
|
|
|
|
|
|
|
v, err := semver.New("0.0.1-alpha.preview+123.github") |
|
|
|
fmt.Printf("Major: %d\n", v.Major) |
|
|
|
fmt.Printf("Minor: %d\n", v.Minor) |
|
|
|
fmt.Printf("Patch: %d\n", v.Patch) |
|
|
|
fmt.Printf("Pre: %s\n", v.Pre) |
|
|
|
fmt.Printf("Build: %s\n", v.Build) |
|
|
|
|
|
|
|
// Prerelease versions array |
|
|
|
if len(v.Pre) > 0 { |
|
|
|
fmt.Println("Prerelease versions:") |
|
|
|
for i, pre := range v.Pre { |
|
|
|
fmt.Printf("%d: %q\n", i, pre) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
v001, err := semver.New("0.0.1") |
|
|
|
// Compare using helpers: v.GT(v2), v.LT, v.GTE, v.LTE |
|
|
|
v001.GT(v) == true |
|
|
|
v.LT(v001) == true |
|
|
|
v.GTE(v) == true |
|
|
|
v.LTE(v) == true |
|
|
|
|
|
|
|
// Or use v.Compare(v2) for comparisons (-1, 0, 1): |
|
|
|
v001.Compare(v) == 1 |
|
|
|
v.Compare(v001) == -1 |
|
|
|
v.Compare(v) == 0 |
|
|
|
|
|
|
|
// Manipulate Version in place: |
|
|
|
v.Pre[0], err = semver.NewPRVersion("beta") |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("Error parsing pre release version: %q", err) |
|
|
|
// Build meta data array |
|
|
|
if len(v.Build) > 0 { |
|
|
|
fmt.Println("Build meta data:") |
|
|
|
for i, build := range v.Build { |
|
|
|
fmt.Printf("%d: %q\n", i, build) |
|
|
|
} |
|
|
|
|
|
|
|
fmt.Println("\nValidate versions:") |
|
|
|
v.Build[0] = "?" |
|
|
|
|
|
|
|
err = v.Validate() |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("Validation failed: %s\n", err) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
v001, err := semver.New("0.0.1") |
|
|
|
// Compare using helpers: v.GT(v2), v.LT, v.GTE, v.LTE |
|
|
|
v001.GT(v) == true |
|
|
|
v.LT(v001) == true |
|
|
|
v.GTE(v) == true |
|
|
|
v.LTE(v) == true |
|
|
|
|
|
|
|
// Or use v.Compare(v2) for comparisons (-1, 0, 1): |
|
|
|
v001.Compare(v) == 1 |
|
|
|
v.Compare(v001) == -1 |
|
|
|
v.Compare(v) == 0 |
|
|
|
|
|
|
|
// Manipulate Version in place: |
|
|
|
v.Pre[0], err = semver.NewPRVersion("beta") |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("Error parsing pre release version: %q", err) |
|
|
|
} |
|
|
|
|
|
|
|
fmt.Println("\nValidate versions:") |
|
|
|
v.Build[0] = "?" |
|
|
|
|
|
|
|
err = v.Validate() |
|
|
|
if err != nil { |
|
|
|
fmt.Printf("Validation failed: %s\n", err) |
|
|
|
} |
|
|
|
``` |
|
|
|
|
|
|
|
Benchmarks |
|
|
|
----- |
|
|
|
|