You've already forked goreleaser
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:
@ -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
|
||||
}
|
||||
|
||||
|
@ -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
25
sha256sum/sha256.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user