package core import ( "strconv" "strings" ) // CompareVersions compares two semver strings (e.g. "v1.4.0", "1.2.3"). // Returns -1 if a < b, 0 if equal, 1 if a > b. func CompareVersions(a, b string) int { pa := parseVersionParts(a) pb := parseVersionParts(b) for i := 0; i < 3; i++ { if pa[i] < pb[i] { return -1 } if pa[i] > pb[i] { return 1 } } return 0 } func parseVersionParts(v string) [3]int { v = strings.TrimPrefix(v, "v") parts := strings.SplitN(v, ".", 3) var nums [3]int for i, p := range parts { if i >= 3 { break } n, _ := strconv.Atoi(p) nums[i] = n } return nums }