From 21da0d7890e3ea7b017cc1b48a80272af9c5be4a Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 24 May 2025 08:24:18 +0200 Subject: [PATCH] fix(stupgrades): return latest stable & pre for each major --- cmd/infra/stupgrades/main.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/infra/stupgrades/main.go b/cmd/infra/stupgrades/main.go index 0549a3022..2a794e370 100644 --- a/cmd/infra/stupgrades/main.go +++ b/cmd/infra/stupgrades/main.go @@ -201,17 +201,21 @@ func (p *proxy) ServeHTTP(w http.ResponseWriter, req *http.Request) { // looking for a prerelease at all. func filterForLatest(rels []upgrade.Release) []upgrade.Release { var filtered []upgrade.Release - var havePre bool + havePre := make(map[string]bool) + haveStable := make(map[string]bool) for _, rel := range rels { - if !rel.Prerelease { - // We found a stable version, we're good now. + major, _, _ := strings.Cut(rel.Tag, ".") + if !rel.Prerelease && !haveStable[major] { + // Remember the first non-pre for each major filtered = append(filtered, rel) - break + haveStable[major] = true + continue } - if rel.Prerelease && !havePre { - // We remember the first prerelease we find. + if rel.Prerelease && !havePre[major] && !haveStable[major] { + // We remember the first prerelease we find, unless we've + // already found a non-pre of the same major. filtered = append(filtered, rel) - havePre = true + havePre[major] = true } } return filtered