summaryrefslogtreecommitdiff
path: root/vendor/github.com/blang/semver/examples/main.go
blob: f36c983d90f6e23fe8f8df70ab6a1cb033dcb362 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package main

import (
	"fmt"
	"github.com/blang/semver"
)

func main() {
	v, err := semver.Parse("0.0.1-alpha.preview.222+123.github")
	if err != nil {
		fmt.Printf("Error while parsing (not valid): %q", err)
	}
	fmt.Printf("Version to string: %q\n", v)

	fmt.Printf("Major: %d\n", v.Major)
	fmt.Printf("Minor: %d\n", v.Minor)
	fmt.Printf("Patch: %d\n", v.Patch)

	// Prerelease versions
	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
	if len(v.Build) > 0 {
		fmt.Println("Build meta data:")
		for i, build := range v.Build {
			fmt.Printf("%d: %q\n", i, build)
		}
	}

	// Make == Parse (Value), New for Pointer
	v001, err := semver.Make("0.0.1")

	fmt.Println("\nUse Version.Compare for comparisons (-1, 0, 1):")
	fmt.Printf("%q is greater than %q: Compare == %d\n", v001, v, v001.Compare(v))
	fmt.Printf("%q is less than %q: Compare == %d\n", v, v001, v.Compare(v001))
	fmt.Printf("%q is equal to %q: Compare == %d\n", v, v, v.Compare(v))

	fmt.Println("\nUse comparison helpers returning booleans:")
	fmt.Printf("%q is greater than %q: %t\n", v001, v, v001.GT(v))
	fmt.Printf("%q is greater than equal %q: %t\n", v001, v, v001.GTE(v))
	fmt.Printf("%q is greater than equal %q: %t\n", v, v, v.GTE(v))
	fmt.Printf("%q is less than %q: %t\n", v, v001, v.LT(v001))
	fmt.Printf("%q is less than equal %q: %t\n", v, v001, v.LTE(v001))
	fmt.Printf("%q is less than equal %q: %t\n", v, v, v.LTE(v))

	fmt.Println("\nManipulate Version in place:")
	v.Pre[0], err = semver.NewPRVersion("beta")
	if err != nil {
		fmt.Printf("Error parsing pre release version: %q", err)
	}
	fmt.Printf("Version to string: %q\n", v)

	fmt.Println("\nCompare Prerelease versions:")
	pre1, _ := semver.NewPRVersion("123")
	pre2, _ := semver.NewPRVersion("alpha")
	pre3, _ := semver.NewPRVersion("124")
	fmt.Printf("%q is less than %q: Compare == %d\n", pre1, pre2, pre1.Compare(pre2))
	fmt.Printf("%q is greater than %q: Compare == %d\n", pre3, pre1, pre3.Compare(pre1))
	fmt.Printf("%q is equal to %q: Compare == %d\n", pre1, pre1, pre1.Compare(pre1))

	fmt.Println("\nValidate versions:")
	v.Build[0] = "?"

	err = v.Validate()
	if err != nil {
		fmt.Printf("Validation failed: %s\n", err)
	}

	fmt.Println("Create valid build meta data:")
	b1, _ := semver.NewBuildVersion("build123")
	v.Build[0] = b1
	fmt.Printf("Version with new build version %q\n", v)

	_, err = semver.NewBuildVersion("build?123")
	if err != nil {
		fmt.Printf("Create build version failed: %s\n", err)
	}
}