grafana/scripts/build/release_publisher/externalrelease.go

63 lines
1.3 KiB
Go
Raw Normal View History

2018-11-01 08:49:32 -05:00
package main
import (
"fmt"
"io/ioutil"
"net/http"
"strings"
"time"
)
type releaseFromExternalContent struct {
getter urlGetter
rawVersion string
artifactConfigurations []buildArtifact
2018-11-01 08:49:32 -05:00
}
func (re releaseFromExternalContent) prepareRelease(baseArchiveUrl, whatsNewUrl string, releaseNotesUrl string) (*release, error) {
2018-11-01 08:49:32 -05:00
version := re.rawVersion[1:]
isBeta := strings.Contains(version, "beta")
builds := []build{}
for _, ba := range re.artifactConfigurations {
2018-11-01 08:49:32 -05:00
sha256, err := re.getter.getContents(fmt.Sprintf("%s.sha256", ba.getUrl(baseArchiveUrl, version, isBeta)))
if err != nil {
return nil, err
}
builds = append(builds, newBuild(baseArchiveUrl, ba, version, isBeta, sha256))
}
r := release{
Version: version,
2018-11-05 09:57:30 -06:00
ReleaseDate: time.Now().UTC(),
2018-11-01 08:49:32 -05:00
Stable: !isBeta,
Beta: isBeta,
Nightly: false,
WhatsNewUrl: whatsNewUrl,
ReleaseNotesUrl: releaseNotesUrl,
Builds: builds,
}
return &r, nil
}
type urlGetter interface {
getContents(url string) (string, error)
}
type getHttpContents struct{}
func (getHttpContents) getContents(url string) (string, error) {
response, err := http.Get(url)
if err != nil {
return "", err
}
defer response.Body.Close()
all, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
return string(all), nil
}