grafana/scripts/build/release_publisher/externalrelease.go

71 lines
1.5 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, nightly bool) (*release, error) {
2018-11-01 08:49:32 -05:00
version := re.rawVersion[1:]
beta := strings.Contains(version, "beta")
var rt ReleaseType
if beta {
rt = BETA
} else if nightly {
rt = NIGHTLY
} else {
rt = STABLE
}
2018-11-01 08:49:32 -05:00
builds := []build{}
for _, ba := range re.artifactConfigurations {
sha256, err := re.getter.getContents(fmt.Sprintf("%s.sha256", ba.getUrl(baseArchiveUrl, version, rt)))
2018-11-01 08:49:32 -05:00
if err != nil {
return nil, err
}
builds = append(builds, newBuild(baseArchiveUrl, ba, version, rt, sha256))
2018-11-01 08:49:32 -05:00
}
r := release{
Version: version,
2018-11-05 09:57:30 -06:00
ReleaseDate: time.Now().UTC(),
Stable: rt.stable(),
Beta: rt.beta(),
Nightly: rt.nightly(),
2018-11-01 08:49:32 -05:00
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
}