feat(upgrader): Improve release channel selection logic #872

Modify GetRelease to compare stable and prerelease versions, returning the most recent release based on publish date
This commit is contained in:
Jacky 2025-02-18 15:25:54 +00:00
parent a6e97f128e
commit da1ed85cef
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D

View file

@ -2,10 +2,11 @@ package upgrader
import ( import (
"encoding/json" "encoding/json"
"github.com/pkg/errors"
"io" "io"
"net/http" "net/http"
"time" "time"
"github.com/pkg/errors"
) )
const ( const (
@ -98,12 +99,26 @@ func getLatestPrerelease() (data TRelease, err error) {
} }
func GetRelease(channel string) (data TRelease, err error) { func GetRelease(channel string) (data TRelease, err error) {
stableRelease, err := getLatestRelease()
if err != nil {
return TRelease{}, err
}
switch channel { switch channel {
default: default:
fallthrough fallthrough
case "stable": case "stable":
return getLatestRelease() return stableRelease, nil
case "prerelease": case "prerelease":
return getLatestPrerelease() preRelease, err := getLatestPrerelease()
if err != nil {
return TRelease{}, err
}
// if preRelease is newer than stableRelease, return preRelease
// otherwise return stableRelease
if preRelease.PublishedAt.After(stableRelease.PublishedAt) {
return preRelease, nil
}
return stableRelease, nil
} }
} }