move GetVersion to provider_github.go
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
5cfad7a4e7
commit
60c358a151
28
main.go
28
main.go
|
|
@ -1,9 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type Version interface {
|
||||
|
|
@ -14,32 +12,6 @@ type VersionProvider interface {
|
|||
GetVersion() (Version, error)
|
||||
}
|
||||
|
||||
func (g *GitHubVersionProvider) GetVersion() (Version, error) {
|
||||
url := fmt.Sprintf("https://api.github.com/repos/%s/releases", g.Repository)
|
||||
r, err := http.Get(url)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't fetch release list for %s from GitHub: %w", g.Repository, err)
|
||||
}
|
||||
defer r.Body.Close()
|
||||
|
||||
var releases []GitHubRelease
|
||||
err = json.NewDecoder(r.Body).Decode(&releases)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't parse json: %w", err)
|
||||
}
|
||||
|
||||
for _, release := range releases {
|
||||
if release.Draft && !g.IncludeDrafts {
|
||||
continue
|
||||
}
|
||||
if release.Prerelease && !g.IncludePrereleases {
|
||||
continue
|
||||
}
|
||||
return &release, nil
|
||||
}
|
||||
return nil, fmt.Errorf("couldn't find any suitable release on GitHub for project %s", g.Repository)
|
||||
}
|
||||
|
||||
func main() {
|
||||
v := GitHubVersionProvider{Repository: "OpenSMTPD/OpenSMTPD"}
|
||||
latest, err := v.GetVersion()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
type GitHubVersionProvider struct {
|
||||
Repository string
|
||||
IncludeDrafts bool
|
||||
|
|
@ -14,6 +20,29 @@ type GitHubRelease struct {
|
|||
}
|
||||
|
||||
func (g GitHubRelease) String() string { return g.TagName }
|
||||
func (g GitHubRelease) Compare() int {
|
||||
return 0 // TODO
|
||||
|
||||
func (g *GitHubVersionProvider) GetVersion() (Version, error) {
|
||||
url := fmt.Sprintf("https://api.github.com/repos/%s/releases", g.Repository)
|
||||
r, err := http.Get(url)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't fetch release list for %s from GitHub: %w", g.Repository, err)
|
||||
}
|
||||
defer r.Body.Close()
|
||||
|
||||
var releases []GitHubRelease
|
||||
err = json.NewDecoder(r.Body).Decode(&releases)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't parse json: %w", err)
|
||||
}
|
||||
|
||||
for _, release := range releases {
|
||||
if release.Draft && !g.IncludeDrafts {
|
||||
continue
|
||||
}
|
||||
if release.Prerelease && !g.IncludePrereleases {
|
||||
continue
|
||||
}
|
||||
return &release, nil
|
||||
}
|
||||
return nil, fmt.Errorf("couldn't find any suitable release on GitHub for project %s", g.Repository)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue