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