mirror of
https://github.com/glanceapp/glance.git
synced 2025-06-22 02:41:23 +02:00
add option to include github prereleases
This commit is contained in:
parent
85b8ee493e
commit
ed477e8cc6
@ -18,11 +18,23 @@ type githubReleaseLatestResponseJson struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
|
func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
|
||||||
httpRequest, err := http.NewRequest(
|
var httpRequest *http.Request
|
||||||
"GET",
|
var err error
|
||||||
fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", request.Repository),
|
var response githubReleaseLatestResponseJson
|
||||||
nil,
|
|
||||||
)
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -32,10 +44,19 @@ func fetchLatestGithubRelease(request *ReleaseRequest) (*AppRelease, error) {
|
|||||||
httpRequest.Header.Add("Authorization", "Bearer "+(*request.Token))
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
}
|
||||||
|
response = releases[0]
|
||||||
|
} else {
|
||||||
|
response, err = decodeJsonFromRequest[githubReleaseLatestResponseJson](defaultClient, httpRequest)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &AppRelease{
|
return &AppRelease{
|
||||||
|
@ -16,9 +16,10 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type ReleaseRequest struct {
|
type ReleaseRequest struct {
|
||||||
Source ReleaseSource
|
Source ReleaseSource
|
||||||
Repository string
|
Repository string
|
||||||
Token *string
|
Token *string
|
||||||
|
IncludeGithubPreReleases bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func FetchLatestReleases(requests []*ReleaseRequest) (AppReleases, error) {
|
func FetchLatestReleases(requests []*ReleaseRequest) (AppReleases, error) {
|
||||||
|
@ -49,7 +49,7 @@ func NewConfigFromYml(contents io.Reader) (*Config, error) {
|
|||||||
func NewConfig() *Config {
|
func NewConfig() *Config {
|
||||||
config := &Config{}
|
config := &Config{}
|
||||||
|
|
||||||
config.Server.Host = ""
|
config.Server.Host = "127.0.0.1"
|
||||||
config.Server.Port = 8080
|
config.Server.Port = 8080
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
@ -12,15 +12,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Releases struct {
|
type Releases struct {
|
||||||
widgetBase `yaml:",inline"`
|
widgetBase `yaml:",inline"`
|
||||||
Releases feed.AppReleases `yaml:"-"`
|
Releases feed.AppReleases `yaml:"-"`
|
||||||
releaseRequests []*feed.ReleaseRequest `yaml:"-"`
|
releaseRequests []*feed.ReleaseRequest `yaml:"-"`
|
||||||
Repositories []string `yaml:"repositories"`
|
Repositories []string `yaml:"repositories"`
|
||||||
Token OptionalEnvString `yaml:"token"`
|
Token OptionalEnvString `yaml:"token"`
|
||||||
GitLabToken OptionalEnvString `yaml:"gitlab-token"`
|
GitLabToken OptionalEnvString `yaml:"gitlab-token"`
|
||||||
Limit int `yaml:"limit"`
|
Limit int `yaml:"limit"`
|
||||||
CollapseAfter int `yaml:"collapse-after"`
|
CollapseAfter int `yaml:"collapse-after"`
|
||||||
ShowSourceIcon bool `yaml:"show-source-icon"`
|
ShowSourceIcon bool `yaml:"show-source-icon"`
|
||||||
|
IncludeGithubPreReleases bool `yaml:"include-github-prereleases"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (widget *Releases) Initialize() error {
|
func (widget *Releases) Initialize() error {
|
||||||
@ -42,8 +43,9 @@ func (widget *Releases) Initialize() error {
|
|||||||
var request *feed.ReleaseRequest
|
var request *feed.ReleaseRequest
|
||||||
if len(parts) == 1 {
|
if len(parts) == 1 {
|
||||||
request = &feed.ReleaseRequest{
|
request = &feed.ReleaseRequest{
|
||||||
Source: feed.ReleaseSourceGithub,
|
Source: feed.ReleaseSourceGithub,
|
||||||
Repository: repository,
|
Repository: repository,
|
||||||
|
IncludeGithubPreReleases: widget.IncludeGithubPreReleases,
|
||||||
}
|
}
|
||||||
|
|
||||||
if widget.Token != "" {
|
if widget.Token != "" {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user