1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-07-17 01:42:37 +02:00

Merge branch 'master' into name-template

This commit is contained in:
Carlos Alexandro Becker
2017-01-11 14:22:41 -02:00
3 changed files with 40 additions and 6 deletions

View File

@ -12,6 +12,7 @@ import (
"github.com/google/go-github/github"
"github.com/goreleaser/releaser/config"
"github.com/goreleaser/releaser/name"
"github.com/goreleaser/releaser/sha256sum"
"github.com/goreleaser/releaser/split"
"golang.org/x/oauth2"
)
@ -22,6 +23,7 @@ const formulae = `class {{ .Name }} < Formula
url "https://github.com/{{ .Repo }}/releases/download/{{ .Tag }}/{{ .File }}.{{ .Format }}"
head "https://github.com/{{ .Repo }}.git"
version "{{ .Tag }}"
sha256 "{{ .SHA256 }}"
def install
bin.install "{{ .BinaryName }}"
@ -37,7 +39,7 @@ end
`
type templateData struct {
Name, Desc, Homepage, Repo, Tag, BinaryName, Caveats, File, Format string
Name, Desc, Homepage, Repo, Tag, BinaryName, Caveats, File, Format, SHA256 string
}
// Pipe for brew deployment
@ -67,7 +69,7 @@ func (Pipe) Run(config config.ProjectConfig) error {
if err != nil {
return err
}
sha, err := sha(client, owner, repo, name, out)
sha, err := formulaeSHA(client, owner, repo, name, out)
if err != nil {
return err
}
@ -85,7 +87,7 @@ func (Pipe) Run(config config.ProjectConfig) error {
return err
}
func sha(client *github.Client, owner, repo, name string, out bytes.Buffer) (*string, error) {
func formulaeSHA(client *github.Client, owner, repo, name string, out bytes.Buffer) (*string, error) {
file, _, _, err := client.Repositories.GetContents(
owner, repo, name, &github.RepositoryContentGetOptions{},
)
@ -119,7 +121,11 @@ func dataFor(config config.ProjectConfig, client *github.Client) (result templat
owner, repo := split.OnSlash(config.Repo)
rep, _, err := client.Repositories.Get(owner, repo)
if err != nil {
return result, err
return
}
sum, err := sha256sum.For("dist/" + config.BinaryName + "_Darwin_x86_64." + config.Archive.Format)
if err != nil {
return
}
if rep.Homepage != nil && *rep.Homepage != "" {
homepage = *rep.Homepage
@ -145,6 +151,7 @@ func dataFor(config config.ProjectConfig, client *github.Client) (result templat
Caveats: config.Brew.Caveats,
File: file,
Format: config.Archive.Format,
SHA256: sum,
}, err
}

View File

@ -27,6 +27,7 @@ var defaultTemplateData = templateData{
Repo: "caarlos0/test",
Tag: "v0.1.3",
File: "test_#{%x(uname -s).gsub(/\\n/, '')}_#{%x(uname -m).gsub(/\\n/, '')}",
SHA256: "1633f61598ab0791e213135923624eb342196b3494909c91899bcd0560f84c68",
Format: "tar.gz",
}
@ -34,10 +35,11 @@ func assertDefaultTemplateData(t *testing.T, formulae string) {
assert := assert.New(t)
assert.Contains(formulae, "class Test < Formula")
assert.Contains(formulae, "homepage \"https://google.com\"")
assert.Contains(formulae, "url \"https://github.com/caarlos0/test/releases/download/v0.1.3/test_#{%x(uname -s).gsub(/\\n/, '')}_#{%x(uname -m).gsub(/\\n/, '')}.tar.gz\"")
assert.Contains(formulae, "head \"https://github.com/caarlos0/test.git\"")
assert.Contains(formulae, "url \"https://github.com/caarlos0/test/releases/download/v0.1.3/test_Darwin_x86_64.tar.gz\"")
assert.Contains(formulae, "sha256 \"1633f61598ab0791e213135923624eb342196b3494909c91899bcd0560f84c68\"")
assert.Contains(formulae, "version \"v0.1.3\"")
assert.Contains(formulae, "bin.install \"test\"")
}
func TestFullFormulae(t *testing.T) {

25
sha256sum/sha256.go Normal file
View File

@ -0,0 +1,25 @@
package sha256sum
import (
"crypto/sha256"
"encoding/hex"
"io"
"os"
)
func For(path string) (result string, err error) {
file, err := os.Open(path)
if err != nil {
return
}
defer func() { _ = file.Close() }()
hash := sha256.New()
_, err = io.Copy(hash, file)
if err != nil {
return
}
result = hex.EncodeToString(hash.Sum(nil))
return
}