mirror of https://github.com/grafana/grafana
parent
6e802dc94d
commit
ff977331f4
@ -1,95 +0,0 @@ |
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"io/ioutil" |
||||
"log" |
||||
"os" |
||||
"path/filepath" |
||||
"regexp" |
||||
"strings" |
||||
"time" |
||||
|
||||
"github.com/pkg/errors" |
||||
) |
||||
|
||||
type releaseLocalSources struct { |
||||
path string |
||||
artifactConfigurations []buildArtifact |
||||
} |
||||
|
||||
func (r releaseLocalSources) prepareRelease(baseArchiveURL, whatsNewURL string, releaseNotesURL string, nightly bool) (*release, error) { |
||||
if !nightly { |
||||
return nil, errors.New("Local releases only supported for nightly builds") |
||||
} |
||||
buildData := r.findBuilds(baseArchiveURL) |
||||
|
||||
rel := release{ |
||||
Version: buildData.version, |
||||
ReleaseDate: time.Now().UTC(), |
||||
Stable: false, |
||||
Beta: false, |
||||
Nightly: nightly, |
||||
WhatsNewURL: whatsNewURL, |
||||
ReleaseNotesURL: releaseNotesURL, |
||||
Builds: buildData.builds, |
||||
} |
||||
|
||||
return &rel, nil |
||||
} |
||||
|
||||
type buildData struct { |
||||
version string |
||||
builds []build |
||||
} |
||||
|
||||
func (r releaseLocalSources) findBuilds(baseArchiveURL string) buildData { |
||||
data := buildData{} |
||||
filepath.Walk(r.path, createBuildWalker(r.path, &data, r.artifactConfigurations, baseArchiveURL)) |
||||
return data |
||||
} |
||||
|
||||
func createBuildWalker(path string, data *buildData, archiveTypes []buildArtifact, baseArchiveURL string) func(path string, f os.FileInfo, err error) error { |
||||
return func(path string, f os.FileInfo, err error) error { |
||||
if err != nil { |
||||
log.Printf("error: %v", err) |
||||
} |
||||
|
||||
if f.Name() == path || strings.HasSuffix(f.Name(), ".sha256") { |
||||
return nil |
||||
} |
||||
|
||||
for _, archive := range archiveTypes { |
||||
if strings.HasSuffix(f.Name(), archive.urlPostfix) { |
||||
shaBytes, err := ioutil.ReadFile(path + ".sha256") |
||||
if err != nil { |
||||
log.Fatalf("Failed to read sha256 file %v", err) |
||||
} |
||||
|
||||
version, err := grabVersion(f.Name(), archive.urlPostfix) |
||||
if err != nil { |
||||
log.Println(err) |
||||
continue |
||||
} |
||||
data.version = version |
||||
data.builds = append(data.builds, build{ |
||||
Os: archive.os, |
||||
URL: archive.getURL(baseArchiveURL, version, NIGHTLY), |
||||
Sha256: string(shaBytes), |
||||
Arch: archive.arch, |
||||
}) |
||||
return nil |
||||
} |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
} |
||||
func grabVersion(name string, suffix string) (string, error) { |
||||
match := regexp.MustCompile(fmt.Sprintf(`grafana(-enterprise)?[-_](.*)%s`, suffix)).FindSubmatch([]byte(name)) |
||||
if len(match) > 0 { |
||||
return string(match[2]), nil |
||||
} |
||||
|
||||
return "", errors.New("No version found") |
||||
} |
Loading…
Reference in new issue