1 package main
2
3 import (
4 "fmt"
5 "github.com/blang/semver"
6 )
7
8 func main() {
9 v, err := semver.Parse("0.0.1-alpha.preview.222+123.github")
10 if err != nil {
11 fmt.Printf("Error while parsing (not valid): %q", err)
12 }
13 fmt.Printf("Version to string: %q\n", v)
14
15 fmt.Printf("Major: %d\n", v.Major)
16 fmt.Printf("Minor: %d\n", v.Minor)
17 fmt.Printf("Patch: %d\n", v.Patch)
18
19
20 if len(v.Pre) > 0 {
21 fmt.Println("Prerelease versions:")
22 for i, pre := range v.Pre {
23 fmt.Printf("%d: %q\n", i, pre)
24 }
25 }
26
27
28 if len(v.Build) > 0 {
29 fmt.Println("Build meta data:")
30 for i, build := range v.Build {
31 fmt.Printf("%d: %q\n", i, build)
32 }
33 }
34
35
36 v001, err := semver.Make("0.0.1")
37
38 fmt.Println("\nUse Version.Compare for comparisons (-1, 0, 1):")
39 fmt.Printf("%q is greater than %q: Compare == %d\n", v001, v, v001.Compare(v))
40 fmt.Printf("%q is less than %q: Compare == %d\n", v, v001, v.Compare(v001))
41 fmt.Printf("%q is equal to %q: Compare == %d\n", v, v, v.Compare(v))
42
43 fmt.Println("\nUse comparison helpers returning booleans:")
44 fmt.Printf("%q is greater than %q: %t\n", v001, v, v001.GT(v))
45 fmt.Printf("%q is greater than equal %q: %t\n", v001, v, v001.GTE(v))
46 fmt.Printf("%q is greater than equal %q: %t\n", v, v, v.GTE(v))
47 fmt.Printf("%q is less than %q: %t\n", v, v001, v.LT(v001))
48 fmt.Printf("%q is less than equal %q: %t\n", v, v001, v.LTE(v001))
49 fmt.Printf("%q is less than equal %q: %t\n", v, v, v.LTE(v))
50
51 fmt.Println("\nManipulate Version in place:")
52 v.Pre[0], err = semver.NewPRVersion("beta")
53 if err != nil {
54 fmt.Printf("Error parsing pre release version: %q", err)
55 }
56 fmt.Printf("Version to string: %q\n", v)
57
58 fmt.Println("\nCompare Prerelease versions:")
59 pre1, _ := semver.NewPRVersion("123")
60 pre2, _ := semver.NewPRVersion("alpha")
61 pre3, _ := semver.NewPRVersion("124")
62 fmt.Printf("%q is less than %q: Compare == %d\n", pre1, pre2, pre1.Compare(pre2))
63 fmt.Printf("%q is greater than %q: Compare == %d\n", pre3, pre1, pre3.Compare(pre1))
64 fmt.Printf("%q is equal to %q: Compare == %d\n", pre1, pre1, pre1.Compare(pre1))
65
66 fmt.Println("\nValidate versions:")
67 v.Build[0] = "?"
68
69 err = v.Validate()
70 if err != nil {
71 fmt.Printf("Validation failed: %s\n", err)
72 }
73
74 fmt.Println("Create valid build meta data:")
75 b1, _ := semver.NewBuildVersion("build123")
76 v.Build[0] = b1
77 fmt.Printf("Version with new build version %q\n", v)
78
79 _, err = semver.NewBuildVersion("build?123")
80 if err != nil {
81 fmt.Printf("Create build version failed: %s\n", err)
82 }
83 }
84
View as plain text