You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	fix: brew tmpl (#1057)
* fix: brew tmpl Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> * fix: compile Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com> * fix: compile Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							c9546ec81b
						
					
				
				
					commit
					ef6e13a61b
				
			| @@ -2,7 +2,6 @@ | ||||
| package client | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"os" | ||||
|  | ||||
| 	"github.com/goreleaser/goreleaser/pkg/config" | ||||
| @@ -19,6 +18,6 @@ type Info struct { | ||||
| // Client interface | ||||
| type Client interface { | ||||
| 	CreateRelease(ctx *context.Context, body string) (releaseID int64, err error) | ||||
| 	CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content bytes.Buffer, path, message string) (err error) | ||||
| 	CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, message string) (err error) | ||||
| 	Upload(ctx *context.Context, releaseID int64, name string, file *os.File) (err error) | ||||
| } | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package client | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"crypto/tls" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| @@ -56,7 +55,7 @@ func (c *githubClient) CreateFile( | ||||
| 	ctx *context.Context, | ||||
| 	commitAuthor config.CommitAuthor, | ||||
| 	repo config.Repo, | ||||
| 	content bytes.Buffer, | ||||
| 	content []byte, | ||||
| 	path, | ||||
| 	message string, | ||||
| ) error { | ||||
| @@ -65,7 +64,7 @@ func (c *githubClient) CreateFile( | ||||
| 			Name:  github.String(commitAuthor.Name), | ||||
| 			Email: github.String(commitAuthor.Email), | ||||
| 		}, | ||||
| 		Content: content.Bytes(), | ||||
| 		Content: content, | ||||
| 		Message: github.String(message), | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -141,7 +141,7 @@ func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) err | ||||
| 	var filename = brew.Name + ".rb" | ||||
| 	var path = filepath.Join(ctx.Config.Dist, filename) | ||||
| 	log.WithField("formula", path).Info("writing") | ||||
| 	if err := ioutil.WriteFile(path, content.Bytes(), 0644); err != nil { | ||||
| 	if err := ioutil.WriteFile(path, []byte(content), 0644); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| @@ -164,28 +164,31 @@ func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) err | ||||
| 		Info("pushing") | ||||
|  | ||||
| 	var msg = fmt.Sprintf("Brew formula update for %s version %s", ctx.Config.ProjectName, ctx.Git.CurrentTag) | ||||
| 	return client.CreateFile(ctx, brew.CommitAuthor, brew.GitHub, content, gpath, msg) | ||||
| 	return client.CreateFile(ctx, brew.CommitAuthor, brew.GitHub, []byte(content), gpath, msg) | ||||
| } | ||||
|  | ||||
| func ghFormulaPath(folder, filename string) string { | ||||
| 	return path.Join(folder, filename) | ||||
| } | ||||
|  | ||||
| func buildFormula(ctx *context.Context, brew config.Homebrew, artifacts []artifact.Artifact) (bytes.Buffer, error) { | ||||
| func buildFormula(ctx *context.Context, brew config.Homebrew, artifacts []artifact.Artifact) (string, error) { | ||||
| 	data, err := dataFor(ctx, brew, artifacts) | ||||
| 	if err != nil { | ||||
| 		return bytes.Buffer{}, err | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return doBuildFormula(data) | ||||
| 	return doBuildFormula(ctx, data) | ||||
| } | ||||
|  | ||||
| func doBuildFormula(data templateData) (out bytes.Buffer, err error) { | ||||
| func doBuildFormula(ctx *context.Context, data templateData) (string, error) { | ||||
| 	t, err := template.New(data.Name).Parse(formulaTemplate) | ||||
| 	if err != nil { | ||||
| 		return out, err | ||||
| 		return "", err | ||||
| 	} | ||||
| 	err = t.Execute(&out, data) | ||||
| 	return | ||||
| 	var out bytes.Buffer | ||||
| 	if err := t.Execute(&out, data); err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return tmpl.New(ctx).Apply(out.String()) | ||||
| } | ||||
|  | ||||
| func dataFor(ctx *context.Context, cfg config.Homebrew, artifacts []artifact.Artifact) (templateData, error) { | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package brew | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"flag" | ||||
| 	"fmt" | ||||
| 	"io/ioutil" | ||||
| @@ -66,10 +65,11 @@ func TestFullFormulae(t *testing.T) { | ||||
| 	data.Plist = "it works" | ||||
| 	data.CustomBlock = []string{"devel do", `  url "https://github.com/caarlos0/test/releases/download/v0.1.3/test_Darwin_x86_64.tar.gz"`, `  sha256 "1633f61598ab0791e213135923624eb342196b3494909c91899bcd0560f84c68"`, "end"} | ||||
| 	data.Install = []string{"custom install script", "another install script"} | ||||
| 	data.Tests = []string{`system "#{bin}/foo -version"`} | ||||
| 	out, err := doBuildFormula(data) | ||||
| 	data.Tests = []string{`system "#{bin}/{{.ProjectName}} -version"`} | ||||
| 	formulae, err := doBuildFormula(context.New(config.Project{ | ||||
| 		ProjectName: "foo", | ||||
| 	}), data) | ||||
| 	assert.NoError(t, err) | ||||
| 	formulae := out.String() | ||||
|  | ||||
| 	var golden = "testdata/test.rb.golden" | ||||
| 	if *update { | ||||
| @@ -82,9 +82,8 @@ func TestFullFormulae(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestFormulaeSimple(t *testing.T) { | ||||
| 	out, err := doBuildFormula(defaultTemplateData) | ||||
| 	formulae, err := doBuildFormula(context.New(config.Project{}), defaultTemplateData) | ||||
| 	assert.NoError(t, err) | ||||
| 	formulae := out.String() | ||||
| 	assertDefaultTemplateData(t, formulae) | ||||
| 	assert.NotContains(t, formulae, "def caveats") | ||||
| 	assert.NotContains(t, formulae, "depends_on") | ||||
| @@ -126,6 +125,9 @@ func TestRunPipe(t *testing.T) { | ||||
| 				}, | ||||
| 				Version:   "1.0.1", | ||||
| 				Artifacts: artifact.New(), | ||||
| 				Env: map[string]string{ | ||||
| 					"FOO": "foo_is_bar", | ||||
| 				}, | ||||
| 				Config: config.Project{ | ||||
| 					Dist:        folder, | ||||
| 					ProjectName: name, | ||||
| @@ -148,14 +150,14 @@ func TestRunPipe(t *testing.T) { | ||||
| 							IDs: []string{ | ||||
| 								"foo", | ||||
| 							}, | ||||
| 							Description:  "A run pipe test formula", | ||||
| 							Description:  "A run pipe test formula and FOO={{ .Env.FOO }}", | ||||
| 							Homepage:     "https://github.com/goreleaser", | ||||
| 							Caveats:      "don't do this", | ||||
| 							Caveats:      "don't do this {{ .ProjectName }}", | ||||
| 							Test:         "system \"true\"\nsystem \"#{bin}/foo -h\"", | ||||
| 							Plist:        `<xml>whatever</xml>`, | ||||
| 							Dependencies: []string{"zsh", "bash"}, | ||||
| 							Conflicts:    []string{"gtk+", "qt"}, | ||||
| 							Install:      `bin.install "foo"`, | ||||
| 							Install:      `bin.install "{{ .ProjectName }}"`, | ||||
| 						}, | ||||
| 					}, | ||||
| 				}, | ||||
| @@ -423,10 +425,9 @@ func (client *DummyClient) CreateRelease(ctx *context.Context, body string) (rel | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content bytes.Buffer, path, msg string) (err error) { | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||
| 	client.CreatedFile = true | ||||
| 	bts, _ := ioutil.ReadAll(&content) | ||||
| 	client.Content = string(bts) | ||||
| 	client.Content = string(content) | ||||
| 	return | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # This file was generated by GoReleaser. DO NOT EDIT. | ||||
| class CustomBlock < Formula | ||||
|   desc "A run pipe test formula" | ||||
|   desc "A run pipe test formula and FOO=foo_is_bar" | ||||
|   homepage "https://github.com/goreleaser" | ||||
|   version "1.0.1" | ||||
|  | ||||
| @@ -19,11 +19,11 @@ class CustomBlock < Formula | ||||
|   conflicts_with "qt" | ||||
|  | ||||
|   def install | ||||
|     bin.install "foo" | ||||
|     bin.install "custom_block" | ||||
|   end | ||||
|  | ||||
|   def caveats; <<~EOS | ||||
|     don't do this | ||||
|     don't do this custom_block | ||||
|   EOS | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # This file was generated by GoReleaser. DO NOT EDIT. | ||||
| class CustomDownloadStrategy < Formula | ||||
|   desc "A run pipe test formula" | ||||
|   desc "A run pipe test formula and FOO=foo_is_bar" | ||||
|   homepage "https://github.com/goreleaser" | ||||
|   version "1.0.1" | ||||
|  | ||||
| @@ -17,11 +17,11 @@ class CustomDownloadStrategy < Formula | ||||
|   conflicts_with "qt" | ||||
|  | ||||
|   def install | ||||
|     bin.install "foo" | ||||
|     bin.install "custom_download_strategy" | ||||
|   end | ||||
|  | ||||
|   def caveats; <<~EOS | ||||
|     don't do this | ||||
|     don't do this custom_download_strategy | ||||
|   EOS | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| # This file was generated by GoReleaser. DO NOT EDIT. | ||||
| require_relative "custom_download_strategy" | ||||
| class CustomRequire < Formula | ||||
|   desc "A run pipe test formula" | ||||
|   desc "A run pipe test formula and FOO=foo_is_bar" | ||||
|   homepage "https://github.com/goreleaser" | ||||
|   version "1.0.1" | ||||
|  | ||||
| @@ -18,11 +18,11 @@ class CustomRequire < Formula | ||||
|   conflicts_with "qt" | ||||
|  | ||||
|   def install | ||||
|     bin.install "foo" | ||||
|     bin.install "custom_require" | ||||
|   end | ||||
|  | ||||
|   def caveats; <<~EOS | ||||
|     don't do this | ||||
|     don't do this custom_require | ||||
|   EOS | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # This file was generated by GoReleaser. DO NOT EDIT. | ||||
| class Default < Formula | ||||
|   desc "A run pipe test formula" | ||||
|   desc "A run pipe test formula and FOO=foo_is_bar" | ||||
|   homepage "https://github.com/goreleaser" | ||||
|   version "1.0.1" | ||||
|  | ||||
| @@ -17,11 +17,11 @@ class Default < Formula | ||||
|   conflicts_with "qt" | ||||
|  | ||||
|   def install | ||||
|     bin.install "foo" | ||||
|     bin.install "default" | ||||
|   end | ||||
|  | ||||
|   def caveats; <<~EOS | ||||
|     don't do this | ||||
|     don't do this default | ||||
|   EOS | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # This file was generated by GoReleaser. DO NOT EDIT. | ||||
| class GithubEnterpriseUrl < Formula | ||||
|   desc "A run pipe test formula" | ||||
|   desc "A run pipe test formula and FOO=foo_is_bar" | ||||
|   homepage "https://github.com/goreleaser" | ||||
|   version "1.0.1" | ||||
|  | ||||
| @@ -17,11 +17,11 @@ class GithubEnterpriseUrl < Formula | ||||
|   conflicts_with "qt" | ||||
|  | ||||
|   def install | ||||
|     bin.install "foo" | ||||
|     bin.install "github_enterprise_url" | ||||
|   end | ||||
|  | ||||
|   def caveats; <<~EOS | ||||
|     don't do this | ||||
|     don't do this github_enterprise_url | ||||
|   EOS | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package release | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| @@ -332,7 +331,7 @@ func (client *DummyClient) CreateRelease(ctx *context.Context, body string) (rel | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content bytes.Buffer, path, msg string) (err error) { | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||
| 	return | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -90,7 +90,7 @@ func doRun(ctx *context.Context, client client.Client) error { | ||||
| 		ctx, | ||||
| 		ctx.Config.Scoop.CommitAuthor, | ||||
| 		ctx.Config.Scoop.Bucket, | ||||
| 		content, | ||||
| 		content.Bytes(), | ||||
| 		path, | ||||
| 		fmt.Sprintf("Scoop update for %s version %s", ctx.Config.ProjectName, ctx.Git.CurrentTag), | ||||
| 	) | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| package scoop | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"flag" | ||||
| 	"io/ioutil" | ||||
| 	"os" | ||||
| @@ -535,10 +534,9 @@ func (client *DummyClient) CreateRelease(ctx *context.Context, body string) (rel | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content bytes.Buffer, path, msg string) (err error) { | ||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||
| 	client.CreatedFile = true | ||||
| 	bts, _ := ioutil.ReadAll(&content) | ||||
| 	client.Content = string(bts) | ||||
| 	client.Content = string(content) | ||||
| 	return | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user