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 }