semver.go 575 B

123456789101112131415161718192021222324252627
  1. package libbox
  2. import (
  3. "strings"
  4. "golang.org/x/mod/semver"
  5. )
  6. func CompareSemver(left string, right string) bool {
  7. normalizedLeft := normalizeSemver(left)
  8. if !semver.IsValid(normalizedLeft) {
  9. return false
  10. }
  11. normalizedRight := normalizeSemver(right)
  12. if !semver.IsValid(normalizedRight) {
  13. return false
  14. }
  15. return semver.Compare(normalizedLeft, normalizedRight) > 0
  16. }
  17. func normalizeSemver(version string) string {
  18. trimmedVersion := strings.TrimSpace(version)
  19. if strings.HasPrefix(trimmedVersion, "v") {
  20. return trimmedVersion
  21. }
  22. return "v" + trimmedVersion
  23. }