1package main 2 3import ( 4 "fmt" 5 6 "github.com/blang/semver" 7) 8 9func 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 // Prerelease versions 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 // Build meta data 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 // Make == Parse (Value), New for Pointer 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