fix(stupgrades): return latest stable & pre for each major

This commit is contained in:
Jakob Borg
2025-06-05 19:19:05 +02:00
parent ebbe57d0ab
commit 21da0d7890
+11 -7
View File
@@ -201,17 +201,21 @@ func (p *proxy) ServeHTTP(w http.ResponseWriter, req *http.Request) {
// looking for a prerelease at all. // looking for a prerelease at all.
func filterForLatest(rels []upgrade.Release) []upgrade.Release { func filterForLatest(rels []upgrade.Release) []upgrade.Release {
var filtered []upgrade.Release var filtered []upgrade.Release
var havePre bool havePre := make(map[string]bool)
haveStable := make(map[string]bool)
for _, rel := range rels { for _, rel := range rels {
if !rel.Prerelease { major, _, _ := strings.Cut(rel.Tag, ".")
// We found a stable version, we're good now. if !rel.Prerelease && !haveStable[major] {
// Remember the first non-pre for each major
filtered = append(filtered, rel) filtered = append(filtered, rel)
break haveStable[major] = true
continue
} }
if rel.Prerelease && !havePre { if rel.Prerelease && !havePre[major] && !haveStable[major] {
// We remember the first prerelease we find. // We remember the first prerelease we find, unless we've
// already found a non-pre of the same major.
filtered = append(filtered, rel) filtered = append(filtered, rel)
havePre = true havePre[major] = true
} }
} }
return filtered return filtered