From 0677c76d104ffe375451f11be6f517a14cc78072 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 fa262a4..9a044b5 100644 --- a/googet.goospec +++ b/googet.goospec @@ -1,4 +1,4 @@ -{{$version := "3.2.0@0" -}} +{{$version := "3.2.1@0" -}} { "name": "googet", "version": "{{$version}}", @@ -15,6 +15,7 @@ "path": "install.ps1" }, "releaseNotes": [ + "3.2.1 - Remove offsets for semver to better support upgrading versions from X.X.X to Y.Y" "3.2.0 - Add Provides functionality and field to the GooGet PkgSpec.", "3.1.0 - Introduce a dry_run flag for update, install, and remove subcommands.", "3.0.0 - Replace googet state file with sqlite database. Add json output for installed command.", diff --git a/goolib/goospec.go b/goolib/goospec.go index 7a54209..1c69348 100644 --- a/goolib/goospec.go +++ b/goolib/goospec.go @@ -165,13 +165,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 } @@ -195,8 +194,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 }