in pkg/server/meta/youtrack.go [684:726]
func compareVersions(a, b string) int {
parse := func(s string) (int, int, bool) {
var major, minor int
hasSuffix := false
parts := strings.SplitN(s, " ", 2)
numeric := parts[0]
if len(parts) > 1 && parts[1] != "" {
hasSuffix = true
}
nums := strings.SplitN(numeric, ".", 2)
if len(nums) > 0 {
major, _ = strconv.Atoi(nums[0])
}
if len(nums) > 1 {
minor, _ = strconv.Atoi(nums[1])
}
return major, minor, hasSuffix
}
aMajor, aMinor, aHasSuffix := parse(a)
bMajor, bMinor, bHasSuffix := parse(b)
if aMajor != bMajor {
if aMajor > bMajor {
return 1
}
return -1
}
if aMinor != bMinor {
if aMinor > bMinor {
return 1
}
return -1
}
if aHasSuffix != bHasSuffix {
if !aHasSuffix {
return 1
}
return -1
}
return 0
}