From ab0176e162c5ddaf7cd8c8138c9f6a1facfd9126 Mon Sep 17 00:00:00 2001 From: Steve Brito Date: Thu, 30 Jan 2025 10:59:18 -0800 Subject: [PATCH] Fix versioning for shorter version strings Offsets currently cause a version of X.X to be compared as 0.X.X. This prevents upgrades from packages that are versioned as X.X.X as the older version will always be greater. We should not need to offset right. --- googet.goospec | 3 ++- goolib/goospec.go | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/googet.goospec b/googet.goospec index 605bf9a..5aa6bed 100644 --- a/googet.goospec +++ b/googet.goospec @@ -1,4 +1,4 @@ -{{$version := "2.21.0@0" -}} +{{$version := "2.21.1@0" -}} { "name": "googet", "version": "{{$version}}", @@ -15,6 +15,7 @@ "path": "install.ps1" }, "releaseNotes": [ + "2.21.1 - Remove offsets for semver to better support upgrading versions from X.X.X to Y.Y" "2.21.0 - Add arm64 arch support.", "2.20.0 - Add installdate metadata to registry key for consumption by external tools.", "2.19.0 - Updated to Go 1.19.", diff --git a/goolib/goospec.go b/goolib/goospec.go index cdc859b..de96a9f 100644 --- a/goolib/goospec.go +++ b/goolib/goospec.go @@ -159,13 +159,12 @@ func fixVer(ver string) string { } out := []string{"0", "0", "0"} nums := strings.SplitN(ver, ".", 3) - offset := len(out) - len(nums) for i, str := range nums { trimmed := strings.TrimLeft(str, "0") if trimmed == "" { trimmed = "0" } - out[i+offset] = trimmed + out[i] = trimmed } return strings.Join(out, ".") + suffix } @@ -189,8 +188,7 @@ func ComparePriorityVersion(p1 priority.Value, v1 string, p2 priority.Value, v2 func ParseVersion(ver string) (Version, error) { v := strings.SplitN(ver, "@", 2) v[0] = fixVer(v[0]) - - sv, err := semver.Parse(v[0]) + sv, err := semver.ParseTolerant(v[0]) if err != nil { return Version{}, err }