add option to include github prereleases

This commit is contained in:
Mystically
2025-01-09 21:19:13 +01:00
parent 85b8ee493e
commit ed477e8cc6
4 changed files with 47 additions and 23 deletions

View File

@@ -18,11 +18,23 @@ type githubReleaseLatestResponseJson struct {
}
func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
httpRequest, err := http.NewRequest(
"GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository),
nil,
)
var httpRequest *http.Request
var err error
var response githubReleaseLatestResponseJson
if request.IncludeGithubPreReleases {
httpRequest, err = http.NewRequest(
"GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases", request.Repository),
nil,
)
} else {
httpRequest, err = http.NewRequest(
"GET",
fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository),
nil,
)
}
if err != nil {
return nil, err
@@ -32,10 +44,19 @@ func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
httpRequest.Header.Add("Authorization", "Bearer "+(*request.Token))
}
response, err := decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if request.IncludeGithubPreReleases {
releases, err := decodeJsonFromRequest[[]githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
if err != nil {
return nil, err
}
response = releases[0]
} else {
response, err = decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
if err != nil {
return nil, err
}
}
return &AppRelease{

View File

@@ -16,9 +16,10 @@ const (
)
type ReleaseRequest struct {
Source ReleaseSource
Repository string
Token *string
Source ReleaseSource
Repository string
Token *string
IncludeGithubPreReleases bool
}
func FetchLatestReleases(requests []*ReleaseRequest) (AppReleases, error) {