From 9ef87bc0d3c668464be61de3ec985989808df350 Mon Sep 17 00:00:00 2001 From: comp500 Date: Sat, 9 Oct 2021 20:39:54 +0100 Subject: [PATCH] Better handling of invalid Modrinth version numbers --- modrinth/modrinth.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modrinth/modrinth.go b/modrinth/modrinth.go index 17d01d4..4e485e1 100644 --- a/modrinth/modrinth.go +++ b/modrinth/modrinth.go @@ -215,7 +215,14 @@ func getLatestVersion(modID string, pack core.Pack) (Version, error) { latestValidVersion := result[0] for _, v := range result[1:] { // For some reason, this library requires a "v" prefix for all version numbers - var semverCompare = semver.Compare("v"+strings.TrimPrefix(v.VersionNumber, "v"), "v"+strings.TrimPrefix(latestValidVersion.VersionNumber, "v")) + currVersion := "v" + strings.TrimPrefix(v.VersionNumber, "v") + latestVersion := "v" + strings.TrimPrefix(latestValidVersion.VersionNumber, "v") + var semverCompare = 0 + // Only compare with semver if both are valid semver - otherwise compare by release date + if semver.IsValid(currVersion) && semver.IsValid(latestVersion) { + semverCompare = semver.Compare(currVersion, latestVersion) + } + if semverCompare == 0 { //Semver is equal, compare date instead vDate, _ := time.Parse(time.RFC3339Nano, v.DatePublished)