From ed477e8cc6281c0764df5573057013b3896e928e Mon Sep 17 00:00:00 2001 From: Mystically <100186990+Mystically11@users.noreply.github.com> Date: Thu, 9 Jan 2025 21:19:13 +0100 Subject: [PATCH] add option to include github prereleases --- internal/feed/github.go | 37 +++++++++++++++++++++++++++++-------- internal/feed/releases.go | 7 ++++--- internal/glance/config.go | 2 +- internal/widget/releases.go | 24 +++++++++++++----------- 4 files changed, 47 insertions(+), 23 deletions(-) diff --git a/internal/feed/github.go b/internal/feed/github.go index 18487f0..9ec3733 100644 --- a/internal/feed/github.go +++ b/internal/feed/github.go @@ -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{ diff --git a/internal/feed/releases.go b/internal/feed/releases.go index b0cdc25..a27f7b0 100644 --- a/internal/feed/releases.go +++ b/internal/feed/releases.go @@ -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) { diff --git a/internal/glance/config.go b/internal/glance/config.go index 131ef7f..5b798e6 100644 --- a/internal/glance/config.go +++ b/internal/glance/config.go @@ -49,7 +49,7 @@ func NewConfigFromYml(contents io.Reader) (*Config, error) { func NewConfig() *Config { config := &Config{} - config.Server.Host = "" + config.Server.Host = "127.0.0.1" config.Server.Port = 8080 return config diff --git a/internal/widget/releases.go b/internal/widget/releases.go index 74b5af7..46aa21a 100644 --- a/internal/widget/releases.go +++ b/internal/widget/releases.go @@ -12,15 +12,16 @@ import ( ) type Releases struct { - widgetBase `yaml:",inline"` - Releases feed.AppReleases `yaml:"-"` - releaseRequests []*feed.ReleaseRequest `yaml:"-"` - Repositories []string `yaml:"repositories"` - Token OptionalEnvString `yaml:"token"` - GitLabToken OptionalEnvString `yaml:"gitlab-token"` - Limit int `yaml:"limit"` - CollapseAfter int `yaml:"collapse-after"` - ShowSourceIcon bool `yaml:"show-source-icon"` + widgetBase `yaml:",inline"` + Releases feed.AppReleases `yaml:"-"` + releaseRequests []*feed.ReleaseRequest `yaml:"-"` + Repositories []string `yaml:"repositories"` + Token OptionalEnvString `yaml:"token"` + GitLabToken OptionalEnvString `yaml:"gitlab-token"` + Limit int `yaml:"limit"` + CollapseAfter int `yaml:"collapse-after"` + ShowSourceIcon bool `yaml:"show-source-icon"` + IncludeGithubPreReleases bool `yaml:"include-github-prereleases"` } func (widget *Releases) Initialize() error { @@ -42,8 +43,9 @@ func (widget *Releases) Initialize() error { var request *feed.ReleaseRequest if len(parts) == 1 { request = &feed.ReleaseRequest{ - Source: feed.ReleaseSourceGithub, - Repository: repository, + Source: feed.ReleaseSourceGithub, + Repository: repository, + IncludeGithubPreReleases: widget.IncludeGithubPreReleases, } if widget.Token != "" {