main.go 2.5 KB

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