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