mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.3 KiB
83 lines
1.3 KiB
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 |
|
}
|
|
|