83 lines
1.3 KiB
Go
83 lines
1.3 KiB
Go
package version
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
Development = iota
|
|
Alpha
|
|
Beta
|
|
RC
|
|
Stable
|
|
)
|
|
|
|
func expandStability(stability string) string {
|
|
stability = strings.ToLower(stability)
|
|
|
|
switch stability {
|
|
case "a":
|
|
return "alpha"
|
|
case "b":
|
|
return "beta"
|
|
case "p":
|
|
return "patch"
|
|
case "pl":
|
|
return "patch"
|
|
case "rc":
|
|
return "RC"
|
|
}
|
|
|
|
return stability
|
|
}
|
|
|
|
func parseStability(version string) string {
|
|
version = regexp.MustCompile(`(?i)#.+$`).ReplaceAllString(version, " ")
|
|
version = strings.ToLower(version)
|
|
|
|
if strings.HasPrefix(version, "dev-") || strings.HasSuffix(version, "-dev") {
|
|
return "dev"
|
|
}
|
|
|
|
result := RegFind(`(?i)^v?(\d{1,3})(\.\d+)?(\.\d+)?(\.\d+)?`+modifierRegex+`$`, version)
|
|
if result != nil {
|
|
if len(result) > 3 {
|
|
return "dev"
|
|
}
|
|
}
|
|
|
|
if result[1] != "" {
|
|
if "beta" == result[1] || "b" == result[1] {
|
|
return "beta"
|
|
}
|
|
if "alpha" == result[1] || "a" == result[1] {
|
|
return "alpha"
|
|
}
|
|
if "rc" == result[1] {
|
|
return "RC"
|
|
}
|
|
}
|
|
|
|
return "stable"
|
|
}
|
|
|
|
func GetStability(version string) int {
|
|
result := RegFind(`(?i)(stable|RC|beta|alpha|dev)`, Normalize(version))
|
|
if len(result) == 0 {
|
|
return Stable
|
|
}
|
|
|
|
switch result[1] {
|
|
case "dev":
|
|
return Development
|
|
case "alpha":
|
|
return Alpha
|
|
case "beta":
|
|
return Beta
|
|
case "RC":
|
|
return RC
|
|
}
|
|
|
|
return Stable
|
|
}
|