mirror of
https://github.com/hanzoai/pack.git
synced 2026-09-30 23:43:13 +00:00
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package resolver
|
|
|
|
import "strings"
|
|
|
|
func resolveToFuzzyVersion(version string) string {
|
|
// Remove any whitespace
|
|
version = strings.TrimSpace(version)
|
|
|
|
// Handle empty string and "*" cases
|
|
if version == "" || version == "*" {
|
|
return "latest"
|
|
}
|
|
|
|
// Handle range notation (e.g. ">=22 <23")
|
|
if strings.Contains(version, ">=") || strings.Contains(version, "<") {
|
|
parts := strings.Fields(version)
|
|
// Take the first version number we find
|
|
for _, part := range parts {
|
|
if v := strings.TrimPrefix(strings.TrimPrefix(part, ">="), "<"); v != part {
|
|
version = v
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
// Handle caret notation by only keeping major version
|
|
if strings.HasPrefix(version, "^") {
|
|
version = strings.TrimPrefix(version, "^")
|
|
parts := strings.Split(version, ".")
|
|
return parts[0]
|
|
}
|
|
|
|
// Remove any prefix characters (~, v)
|
|
version = strings.TrimPrefix(version, "~")
|
|
version = strings.TrimPrefix(version, "v")
|
|
|
|
// Replace .x with empty string (e.g. "14.x" -> "14")
|
|
version = strings.ReplaceAll(version, ".x", "")
|
|
|
|
// Remove any trailing dots
|
|
version = strings.TrimRight(version, ".")
|
|
|
|
return version
|
|
}
|