You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	refactor: align Homebrew repo handling with Scoop (#1649)
This commit is contained in:
		| @@ -81,7 +81,7 @@ archives: | |||||||
|     - goos: windows |     - goos: windows | ||||||
|       format: zip |       format: zip | ||||||
| brews: | brews: | ||||||
|   - github: |   - tap: | ||||||
|       owner: goreleaser |       owner: goreleaser | ||||||
|       name: homebrew-tap |       name: homebrew-tap | ||||||
|     folder: Formula |     folder: Formula | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
| package client | package client | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
| 	"os" | 	"os" | ||||||
|  |  | ||||||
| 	"github.com/apex/log" | 	"github.com/apex/log" | ||||||
| @@ -20,6 +21,7 @@ type Info struct { | |||||||
| // Client interface. | // Client interface. | ||||||
| type Client interface { | type Client interface { | ||||||
| 	CreateRelease(ctx *context.Context, body string) (releaseID string, err error) | 	CreateRelease(ctx *context.Context, body string) (releaseID string, err error) | ||||||
|  | 	ReleaseURLTemplate(ctx *context.Context) (string, error) | ||||||
| 	CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, 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 string, artifact *artifact.Artifact, file *os.File) (err error) | 	Upload(ctx *context.Context, releaseID string, artifact *artifact.Artifact, file *os.File) (err error) | ||||||
| } | } | ||||||
| @@ -47,3 +49,16 @@ type RetriableError struct { | |||||||
| func (e RetriableError) Error() string { | func (e RetriableError) Error() string { | ||||||
| 	return e.Err.Error() | 	return e.Err.Error() | ||||||
| } | } | ||||||
|  |  | ||||||
|  | type NotImplementedError struct { | ||||||
|  | 	TokenType context.TokenType | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (e NotImplementedError) Error() string { | ||||||
|  | 	return fmt.Sprintf("not implemented for %s", e.TokenType) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func IsNotImplementedErr(err error) bool { | ||||||
|  | 	_, ok := err.(NotImplementedError) | ||||||
|  | 	return ok | ||||||
|  | } | ||||||
|   | |||||||
| @@ -168,6 +168,10 @@ func (c *giteaClient) CreateRelease(ctx *context.Context, body string) (string, | |||||||
| 	return strconv.FormatInt(release.ID, 10), nil | 	return strconv.FormatInt(release.ID, 10), nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (c *giteaClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
|  | 	return "", NotImplementedError{TokenType: context.TokenTypeGitea} | ||||||
|  | } | ||||||
|  |  | ||||||
| // Upload uploads a file into a release repository. | // Upload uploads a file into a release repository. | ||||||
| func (c *giteaClient) Upload( | func (c *giteaClient) Upload( | ||||||
| 	ctx *context.Context, | 	ctx *context.Context, | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ package client | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"crypto/tls" | 	"crypto/tls" | ||||||
|  | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"os" | 	"os" | ||||||
| @@ -17,6 +18,8 @@ import ( | |||||||
| 	"golang.org/x/oauth2" | 	"golang.org/x/oauth2" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | const DefaultGitHubDownloadURL = "https://github.com" | ||||||
|  |  | ||||||
| type githubClient struct { | type githubClient struct { | ||||||
| 	client *github.Client | 	client *github.Client | ||||||
| } | } | ||||||
| @@ -147,6 +150,15 @@ func (c *githubClient) CreateRelease(ctx *context.Context, body string) (string, | |||||||
| 	return githubReleaseID, err | 	return githubReleaseID, err | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (c *githubClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
|  | 	return fmt.Sprintf( | ||||||
|  | 		"%s/%s/%s/releases/download/{{ .Tag }}/{{ .ArtifactName }}", | ||||||
|  | 		ctx.Config.GitHubURLs.Download, | ||||||
|  | 		ctx.Config.Release.GitHub.Owner, | ||||||
|  | 		ctx.Config.Release.GitHub.Name, | ||||||
|  | 	), nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func (c *githubClient) Upload( | func (c *githubClient) Upload( | ||||||
| 	ctx *context.Context, | 	ctx *context.Context, | ||||||
| 	releaseID string, | 	releaseID string, | ||||||
|   | |||||||
| @@ -56,6 +56,29 @@ func TestGitHubUploadReleaseIDNotInt(t *testing.T) { | |||||||
| 	) | 	) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestGitHubReleaseURLTemplate(t *testing.T) { | ||||||
|  | 	var ctx = context.New(config.Project{ | ||||||
|  | 		GitHubURLs: config.GitHubURLs{ | ||||||
|  | 			// default URL would otherwise be set via pipe/defaults | ||||||
|  | 			Download: DefaultGitHubDownloadURL, | ||||||
|  | 		}, | ||||||
|  | 		Release: config.Release{ | ||||||
|  | 			GitHub: config.Repo{ | ||||||
|  | 				Owner: "owner", | ||||||
|  | 				Name:  "name", | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}) | ||||||
|  | 	client, err := NewGitHub(ctx) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	urlTpl, err := client.ReleaseURLTemplate(ctx) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	expectedUrl := "https://github.com/owner/name/releases/download/{{ .Tag }}/{{ .ArtifactName }}" | ||||||
|  | 	require.Equal(t, expectedUrl, urlTpl) | ||||||
|  | } | ||||||
|  |  | ||||||
| func TestGitHubCreateReleaseWrongNameTemplate(t *testing.T) { | func TestGitHubCreateReleaseWrongNameTemplate(t *testing.T) { | ||||||
| 	var ctx = context.New(config.Project{ | 	var ctx = context.New(config.Project{ | ||||||
| 		Release: config.Release{ | 		Release: config.Release{ | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ package client | |||||||
| import ( | import ( | ||||||
| 	"crypto/tls" | 	"crypto/tls" | ||||||
| 	"errors" | 	"errors" | ||||||
|  | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"os" | 	"os" | ||||||
| 	"strings" | 	"strings" | ||||||
| @@ -15,6 +16,8 @@ import ( | |||||||
| 	"github.com/xanzy/go-gitlab" | 	"github.com/xanzy/go-gitlab" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | const DefaultGitLabDownloadURL = "https://gitlab.com" | ||||||
|  |  | ||||||
| // ErrExtractHashFromFileUploadURL indicates the file upload hash could not ne extracted from the url. | // ErrExtractHashFromFileUploadURL indicates the file upload hash could not ne extracted from the url. | ||||||
| var ErrExtractHashFromFileUploadURL = errors.New("could not extract hash from gitlab file upload url") | var ErrExtractHashFromFileUploadURL = errors.New("could not extract hash from gitlab file upload url") | ||||||
|  |  | ||||||
| @@ -229,6 +232,15 @@ func (c *gitlabClient) CreateRelease(ctx *context.Context, body string) (release | |||||||
| 	return tagName, err // gitlab references a tag in a repo by its name | 	return tagName, err // gitlab references a tag in a repo by its name | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (c *gitlabClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
|  | 	return fmt.Sprintf( | ||||||
|  | 		"%s/%s/%s/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}", | ||||||
|  | 		ctx.Config.GitLabURLs.Download, | ||||||
|  | 		ctx.Config.Release.GitLab.Owner, | ||||||
|  | 		ctx.Config.Release.GitLab.Name, | ||||||
|  | 	), nil | ||||||
|  | } | ||||||
|  |  | ||||||
| // Upload uploads a file into a release repository. | // Upload uploads a file into a release repository. | ||||||
| func (c *gitlabClient) Upload( | func (c *gitlabClient) Upload( | ||||||
| 	ctx *context.Context, | 	ctx *context.Context, | ||||||
|   | |||||||
| @@ -4,6 +4,8 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/goreleaser/goreleaser/pkg/config" | ||||||
|  | 	"github.com/goreleaser/goreleaser/pkg/context" | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -31,3 +33,26 @@ func TestFailToExtractHashFromProjectFileURL(t *testing.T) { | |||||||
| 		t.Errorf("expected an error but got none for path-too-small in url") | 		t.Errorf("expected an error but got none for path-too-small in url") | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func TestGitLabReleaseURLTemplate(t *testing.T) { | ||||||
|  | 	var ctx = context.New(config.Project{ | ||||||
|  | 		GitLabURLs: config.GitLabURLs{ | ||||||
|  | 			// default URL would otherwise be set via pipe/defaults | ||||||
|  | 			Download: DefaultGitLabDownloadURL, | ||||||
|  | 		}, | ||||||
|  | 		Release: config.Release{ | ||||||
|  | 			GitLab: config.Repo{ | ||||||
|  | 				Owner: "owner", | ||||||
|  | 				Name:  "name", | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	}) | ||||||
|  | 	client, err := NewGitLab(ctx) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	urlTpl, err := client.ReleaseURLTemplate(ctx) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	expectedUrl := "https://gitlab.com/owner/name/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}" | ||||||
|  | 	assert.Equal(t, expectedUrl, urlTpl) | ||||||
|  | } | ||||||
|   | |||||||
| @@ -22,8 +22,8 @@ func Notice(ctx *context.Context, property string) { | |||||||
| 	}() | 	}() | ||||||
| 	// replaces . and _ with - | 	// replaces . and _ with - | ||||||
| 	url := baseURL + strings.NewReplacer( | 	url := baseURL + strings.NewReplacer( | ||||||
| 		".", "-", | 		".", "", | ||||||
| 		"_", "-", | 		"_", "", | ||||||
| 	).Replace(property) | 	).Replace(property) | ||||||
| 	log.Warn(color.New(color.Bold, color.FgHiYellow).Sprintf( | 	log.Warn(color.New(color.Bold, color.FgHiYellow).Sprintf( | ||||||
| 		"DEPRECATED: `%s` should not be used anymore, check %s for more info.", | 		"DEPRECATED: `%s` should not be used anymore, check %s for more info.", | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
|    • first                     |    • first                     | ||||||
|    • DEPRECATED: `foo.bar.whatever` should not be used anymore, check https://goreleaser.com/deprecations#foo-bar-whatever for more info. |    • DEPRECATED: `foo.bar.whatever` should not be used anymore, check https://goreleaser.com/deprecations#foobarwhatever for more info. | ||||||
|    • last                      |    • last                      | ||||||
|   | |||||||
| @@ -12,6 +12,7 @@ import ( | |||||||
| 	"github.com/apex/log" | 	"github.com/apex/log" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/artifact" | 	"github.com/goreleaser/goreleaser/internal/artifact" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/client" | 	"github.com/goreleaser/goreleaser/internal/client" | ||||||
|  | 	"github.com/goreleaser/goreleaser/internal/deprecate" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/pipe" | 	"github.com/goreleaser/goreleaser/internal/pipe" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/tmpl" | 	"github.com/goreleaser/goreleaser/internal/tmpl" | ||||||
| 	"github.com/goreleaser/goreleaser/pkg/config" | 	"github.com/goreleaser/goreleaser/pkg/config" | ||||||
| @@ -26,9 +27,6 @@ var ErrNoArchivesFound = errors.New("no linux/macos archives found") | |||||||
| // for linux or windows. | // for linux or windows. | ||||||
| var ErrMultipleArchivesSameOS = errors.New("one tap can handle only archive of an OS/Arch combination. Consider using ids in the brew section") | var ErrMultipleArchivesSameOS = errors.New("one tap can handle only archive of an OS/Arch combination. Consider using ids in the brew section") | ||||||
|  |  | ||||||
| // ErrEmptyTokenType indicates unknown token type. |  | ||||||
| var ErrEmptyTokenType = errors.New("no token type found") |  | ||||||
|  |  | ||||||
| // ErrTokenTypeNotImplementedForBrew indicates that a new token type was not implemented for this pipe. | // ErrTokenTypeNotImplementedForBrew indicates that a new token type was not implemented for this pipe. | ||||||
| type ErrTokenTypeNotImplementedForBrew struct { | type ErrTokenTypeNotImplementedForBrew struct { | ||||||
| 	TokenType context.TokenType | 	TokenType context.TokenType | ||||||
| @@ -50,6 +48,11 @@ func (Pipe) String() string { | |||||||
|  |  | ||||||
| // Publish brew formula. | // Publish brew formula. | ||||||
| func (Pipe) Publish(ctx *context.Context) error { | func (Pipe) Publish(ctx *context.Context) error { | ||||||
|  | 	// we keep GitHub as default for now, in line with releases | ||||||
|  | 	if string(ctx.TokenType) == "" { | ||||||
|  | 		ctx.TokenType = context.TokenTypeGitHub | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	client, err := client.New(ctx) | 	client, err := client.New(ctx) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -66,6 +69,7 @@ func (Pipe) Publish(ctx *context.Context) error { | |||||||
| func (Pipe) Default(ctx *context.Context) error { | func (Pipe) Default(ctx *context.Context) error { | ||||||
| 	for i := range ctx.Config.Brews { | 	for i := range ctx.Config.Brews { | ||||||
| 		var brew = &ctx.Config.Brews[i] | 		var brew = &ctx.Config.Brews[i] | ||||||
|  |  | ||||||
| 		if brew.Install == "" { | 		if brew.Install == "" { | ||||||
| 			// TODO: maybe replace this with a simplear also optimistic | 			// TODO: maybe replace this with a simplear also optimistic | ||||||
| 			// approach of just doing `bin.install "project_name"`? | 			// approach of just doing `bin.install "project_name"`? | ||||||
| @@ -82,6 +86,14 @@ func (Pipe) Default(ctx *context.Context) error { | |||||||
| 			brew.Install = strings.Join(installs, "\n") | 			brew.Install = strings.Join(installs, "\n") | ||||||
| 			log.Warnf("optimistically guessing `brew[%d].installs`, double check", i) | 			log.Warnf("optimistically guessing `brew[%d].installs`, double check", i) | ||||||
| 		} | 		} | ||||||
|  | 		if brew.GitHub.String() != "" { | ||||||
|  | 			deprecate.Notice(ctx, "brews.github") | ||||||
|  | 			brew.Tap = brew.GitHub | ||||||
|  | 		} | ||||||
|  | 		if brew.GitLab.String() != "" { | ||||||
|  | 			deprecate.Notice(ctx, "brews.gitlab") | ||||||
|  | 			brew.Tap = brew.GitLab | ||||||
|  | 		} | ||||||
| 		if brew.CommitAuthor.Name == "" { | 		if brew.CommitAuthor.Name == "" { | ||||||
| 			brew.CommitAuthor.Name = "goreleaserbot" | 			brew.CommitAuthor.Name = "goreleaserbot" | ||||||
| 		} | 		} | ||||||
| @@ -118,7 +130,7 @@ func contains(ss []string, s string) bool { | |||||||
| } | } | ||||||
|  |  | ||||||
| func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) error { | func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) error { | ||||||
| 	if brew.GitHub.Name == "" && brew.GitLab.Name == "" { | 	if brew.Tap.Name == "" { | ||||||
| 		return pipe.Skip("brew section is not configured") | 		return pipe.Skip("brew section is not configured") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -148,7 +160,7 @@ func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) err | |||||||
| 		return ErrNoArchivesFound | 		return ErrNoArchivesFound | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	content, err := buildFormula(ctx, brew, ctx.TokenType, archives) | 	content, err := buildFormula(ctx, brew, client, archives) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| @@ -170,18 +182,7 @@ func doRun(ctx *context.Context, brew config.Homebrew, client client.Client) err | |||||||
| 		return pipe.Skip("prerelease detected with 'auto' upload, skipping homebrew publish") | 		return pipe.Skip("prerelease detected with 'auto' upload, skipping homebrew publish") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var repo config.Repo | 	repo := brew.Tap | ||||||
| 	switch ctx.TokenType { |  | ||||||
| 	case context.TokenTypeGitHub: |  | ||||||
| 		repo = brew.GitHub |  | ||||||
| 	case context.TokenTypeGitLab: |  | ||||||
| 		repo = brew.GitLab |  | ||||||
| 	default: |  | ||||||
| 		if string(ctx.TokenType) == "" { |  | ||||||
| 			return ErrEmptyTokenType |  | ||||||
| 		} |  | ||||||
| 		return ErrTokenTypeNotImplementedForBrew{ctx.TokenType} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	var gpath = buildFormulaPath(brew.Folder, filename) | 	var gpath = buildFormulaPath(brew.Folder, filename) | ||||||
| 	log.WithField("formula", gpath). | 	log.WithField("formula", gpath). | ||||||
| @@ -196,8 +197,8 @@ func buildFormulaPath(folder, filename string) string { | |||||||
| 	return path.Join(folder, filename) | 	return path.Join(folder, filename) | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildFormula(ctx *context.Context, brew config.Homebrew, tokenType context.TokenType, artifacts []*artifact.Artifact) (string, error) { | func buildFormula(ctx *context.Context, brew config.Homebrew, client client.Client, artifacts []*artifact.Artifact) (string, error) { | ||||||
| 	data, err := dataFor(ctx, brew, tokenType, artifacts) | 	data, err := dataFor(ctx, brew, client, artifacts) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
| 	} | 	} | ||||||
| @@ -216,7 +217,7 @@ func doBuildFormula(ctx *context.Context, data templateData) (string, error) { | |||||||
| 	return tmpl.New(ctx).Apply(out.String()) | 	return tmpl.New(ctx).Apply(out.String()) | ||||||
| } | } | ||||||
|  |  | ||||||
| func dataFor(ctx *context.Context, cfg config.Homebrew, tokenType context.TokenType, artifacts []*artifact.Artifact) (templateData, error) { | func dataFor(ctx *context.Context, cfg config.Homebrew, cl client.Client, artifacts []*artifact.Artifact) (templateData, error) { | ||||||
| 	var result = templateData{ | 	var result = templateData{ | ||||||
| 		Name:             formulaNameFor(cfg.Name), | 		Name:             formulaNameFor(cfg.Name), | ||||||
| 		Desc:             cfg.Description, | 		Desc:             cfg.Description, | ||||||
| @@ -240,25 +241,14 @@ func dataFor(ctx *context.Context, cfg config.Homebrew, tokenType context.TokenT | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if cfg.URLTemplate == "" { | 		if cfg.URLTemplate == "" { | ||||||
| 			switch tokenType { | 			url, err := cl.ReleaseURLTemplate(ctx) | ||||||
| 			// we keep GitHub as default for now, in line with releases | 			if err != nil { | ||||||
| 			case context.TokenTypeGitHub, "": | 				if client.IsNotImplementedErr(err) { | ||||||
| 				cfg.URLTemplate = fmt.Sprintf( | 					return result, ErrTokenTypeNotImplementedForBrew{ctx.TokenType} | ||||||
| 					"%s/%s/%s/releases/download/{{ .Tag }}/{{ .ArtifactName }}", | 				} | ||||||
| 					ctx.Config.GitHubURLs.Download, | 				return result, err | ||||||
| 					ctx.Config.Release.GitHub.Owner, |  | ||||||
| 					ctx.Config.Release.GitHub.Name, |  | ||||||
| 				) |  | ||||||
| 			case context.TokenTypeGitLab: |  | ||||||
| 				cfg.URLTemplate = fmt.Sprintf( |  | ||||||
| 					"%s/%s/%s/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}", |  | ||||||
| 					ctx.Config.GitLabURLs.Download, |  | ||||||
| 					ctx.Config.Release.GitLab.Owner, |  | ||||||
| 					ctx.Config.Release.GitLab.Name, |  | ||||||
| 				) |  | ||||||
| 			default: |  | ||||||
| 				return result, ErrTokenTypeNotImplementedForBrew{tokenType} |  | ||||||
| 			} | 			} | ||||||
|  | 			cfg.URLTemplate = url | ||||||
| 		} | 		} | ||||||
| 		url, err := tmpl.New(ctx).WithArtifact(artifact, map[string]string{}).Apply(cfg.URLTemplate) | 		url, err := tmpl.New(ctx).WithArtifact(artifact, map[string]string{}).Apply(cfg.URLTemplate) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|   | |||||||
| @@ -9,6 +9,7 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/goreleaser/goreleaser/internal/artifact" | 	"github.com/goreleaser/goreleaser/internal/artifact" | ||||||
|  | 	"github.com/goreleaser/goreleaser/internal/client" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/testlib" | 	"github.com/goreleaser/goreleaser/internal/testlib" | ||||||
| 	"github.com/goreleaser/goreleaser/pkg/config" | 	"github.com/goreleaser/goreleaser/pkg/config" | ||||||
| 	"github.com/goreleaser/goreleaser/pkg/context" | 	"github.com/goreleaser/goreleaser/pkg/context" | ||||||
| @@ -115,42 +116,22 @@ func TestRunPipe(t *testing.T) { | |||||||
| 	for name, fn := range map[string]func(ctx *context.Context){ | 	for name, fn := range map[string]func(ctx *context.Context){ | ||||||
| 		"default": func(ctx *context.Context) { | 		"default": func(ctx *context.Context) { | ||||||
| 			ctx.TokenType = context.TokenTypeGitHub | 			ctx.TokenType = context.TokenTypeGitHub | ||||||
| 			ctx.Config.GitHubURLs.Download = "https://github.com" | 			ctx.Config.Brews[0].Tap.Owner = "test" | ||||||
| 			ctx.Config.Release.GitHub.Owner = "test" | 			ctx.Config.Brews[0].Tap.Name = "test" | ||||||
| 			ctx.Config.Release.GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | ||||||
| 		}, | 		}, | ||||||
| 		"github_enterprise_url": func(ctx *context.Context) { |  | ||||||
| 			ctx.TokenType = context.TokenTypeGitHub |  | ||||||
| 			ctx.Config.GitHubURLs.Download = "https://github.com" |  | ||||||
| 			ctx.Config.Release.GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Release.GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" |  | ||||||
|  |  | ||||||
| 			ctx.Config.GitHubURLs.Download = "http://github.example.org" |  | ||||||
| 		}, |  | ||||||
| 		"custom_download_strategy": func(ctx *context.Context) { | 		"custom_download_strategy": func(ctx *context.Context) { | ||||||
| 			ctx.TokenType = context.TokenTypeGitHub | 			ctx.TokenType = context.TokenTypeGitHub | ||||||
| 			ctx.Config.GitHubURLs.Download = "https://github.com" | 			ctx.Config.Brews[0].Tap.Owner = "test" | ||||||
| 			ctx.Config.Release.GitHub.Owner = "test" | 			ctx.Config.Brews[0].Tap.Name = "test" | ||||||
| 			ctx.Config.Release.GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | ||||||
|  |  | ||||||
| 			ctx.Config.Brews[0].DownloadStrategy = "GitHubPrivateRepositoryReleaseDownloadStrategy" | 			ctx.Config.Brews[0].DownloadStrategy = "GitHubPrivateRepositoryReleaseDownloadStrategy" | ||||||
| 		}, | 		}, | ||||||
| 		"custom_require": func(ctx *context.Context) { | 		"custom_require": func(ctx *context.Context) { | ||||||
| 			ctx.TokenType = context.TokenTypeGitHub | 			ctx.TokenType = context.TokenTypeGitHub | ||||||
| 			ctx.Config.GitHubURLs.Download = "https://github.com" | 			ctx.Config.Brews[0].Tap.Owner = "test" | ||||||
| 			ctx.Config.Release.GitHub.Owner = "test" | 			ctx.Config.Brews[0].Tap.Name = "test" | ||||||
| 			ctx.Config.Release.GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | ||||||
|  |  | ||||||
| 			ctx.Config.Brews[0].DownloadStrategy = "CustomDownloadStrategy" | 			ctx.Config.Brews[0].DownloadStrategy = "CustomDownloadStrategy" | ||||||
| @@ -158,35 +139,18 @@ func TestRunPipe(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 		"custom_block": func(ctx *context.Context) { | 		"custom_block": func(ctx *context.Context) { | ||||||
| 			ctx.TokenType = context.TokenTypeGitHub | 			ctx.TokenType = context.TokenTypeGitHub | ||||||
| 			ctx.Config.GitHubURLs.Download = "https://github.com" | 			ctx.Config.Brews[0].Tap.Owner = "test" | ||||||
| 			ctx.Config.Release.GitHub.Owner = "test" | 			ctx.Config.Brews[0].Tap.Name = "test" | ||||||
| 			ctx.Config.Release.GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitHub.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | 			ctx.Config.Brews[0].Homepage = "https://github.com/goreleaser" | ||||||
|  |  | ||||||
| 			ctx.Config.Brews[0].CustomBlock = `head "https://github.com/caarlos0/test.git"` | 			ctx.Config.Brews[0].CustomBlock = `head "https://github.com/caarlos0/test.git"` | ||||||
| 		}, | 		}, | ||||||
| 		"default_gitlab": func(ctx *context.Context) { | 		"default_gitlab": func(ctx *context.Context) { | ||||||
| 			ctx.TokenType = context.TokenTypeGitLab | 			ctx.TokenType = context.TokenTypeGitLab | ||||||
| 			ctx.Config.GitLabURLs.Download = "https://gitlab.com" | 			ctx.Config.Brews[0].Tap.Owner = "test" | ||||||
| 			ctx.Config.Release.GitLab.Owner = "test" | 			ctx.Config.Brews[0].Tap.Name = "test" | ||||||
| 			ctx.Config.Release.GitLab.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitLab.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitLab.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://gitlab.com/goreleaser" | 			ctx.Config.Brews[0].Homepage = "https://gitlab.com/goreleaser" | ||||||
| 		}, | 		}, | ||||||
| 		"gitlab_enterprise_url": func(ctx *context.Context) { |  | ||||||
| 			ctx.TokenType = context.TokenTypeGitLab |  | ||||||
| 			ctx.Config.GitLabURLs.Download = "https://gitlab.com" |  | ||||||
| 			ctx.Config.Release.GitLab.Owner = "test" |  | ||||||
| 			ctx.Config.Release.GitLab.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitLab.Owner = "test" |  | ||||||
| 			ctx.Config.Brews[0].GitLab.Name = "test" |  | ||||||
| 			ctx.Config.Brews[0].Homepage = "https://gitlab.com/goreleaser" |  | ||||||
|  |  | ||||||
| 			ctx.Config.GitLabURLs.Download = "https://gitlab.my-company.org" |  | ||||||
| 		}, |  | ||||||
| 	} { | 	} { | ||||||
| 		t.Run(name, func(t *testing.T) { | 		t.Run(name, func(t *testing.T) { | ||||||
| 			folder, err := ioutil.TempDir("", "goreleasertest") | 			folder, err := ioutil.TempDir("", "goreleasertest") | ||||||
| @@ -305,7 +269,7 @@ func TestRunPipeForMultipleArmVersions(t *testing.T) { | |||||||
| 						Dependencies: []config.HomebrewDependency{{Name: "zsh"}, {Name: "bash", Type: "recommended"}}, | 						Dependencies: []config.HomebrewDependency{{Name: "zsh"}, {Name: "bash", Type: "recommended"}}, | ||||||
| 						Conflicts:    []string{"gtk+", "qt"}, | 						Conflicts:    []string{"gtk+", "qt"}, | ||||||
| 						Install:      `bin.install "{{ .ProjectName }}"`, | 						Install:      `bin.install "{{ .ProjectName }}"`, | ||||||
| 						GitHub: config.Repo{ | 						Tap: config.Repo{ | ||||||
| 							Owner: "test", | 							Owner: "test", | ||||||
| 							Name:  "test", | 							Name:  "test", | ||||||
| 						}, | 						}, | ||||||
| @@ -401,7 +365,7 @@ func TestRunPipeNoDarwin64Build(t *testing.T) { | |||||||
| 		Config: config.Project{ | 		Config: config.Project{ | ||||||
| 			Brews: []config.Homebrew{ | 			Brews: []config.Homebrew{ | ||||||
| 				{ | 				{ | ||||||
| 					GitHub: config.Repo{ | 					Tap: config.Repo{ | ||||||
| 						Owner: "test", | 						Owner: "test", | ||||||
| 						Name:  "test", | 						Name:  "test", | ||||||
| 					}, | 					}, | ||||||
| @@ -419,7 +383,7 @@ func TestRunPipeMultipleArchivesSameOsBuild(t *testing.T) { | |||||||
| 		config.Project{ | 		config.Project{ | ||||||
| 			Brews: []config.Homebrew{ | 			Brews: []config.Homebrew{ | ||||||
| 				{ | 				{ | ||||||
| 					GitHub: config.Repo{ | 					Tap: config.Repo{ | ||||||
| 						Owner: "test", | 						Owner: "test", | ||||||
| 						Name:  "test", | 						Name:  "test", | ||||||
| 					}, | 					}, | ||||||
| @@ -539,18 +503,16 @@ func TestRunPipeMultipleArchivesSameOsBuild(t *testing.T) { | |||||||
|  |  | ||||||
| 	for _, test := range tests { | 	for _, test := range tests { | ||||||
| 		for idx, ttt := range test.osarchs { | 		for idx, ttt := range test.osarchs { | ||||||
| 			t.Run(ttt.goarch, func(tt *testing.T) { | 			ctx.Artifacts.Add(&artifact.Artifact{ | ||||||
| 				ctx.Artifacts.Add(&artifact.Artifact{ | 				Name:   fmt.Sprintf("bin%d", idx), | ||||||
| 					Name:   fmt.Sprintf("bin%d", idx), | 				Path:   f.Name(), | ||||||
| 					Path:   f.Name(), | 				Goos:   ttt.goos, | ||||||
| 					Goos:   ttt.goos, | 				Goarch: ttt.goarch, | ||||||
| 					Goarch: ttt.goarch, | 				Type:   artifact.UploadableArchive, | ||||||
| 					Type:   artifact.UploadableArchive, | 				Extra: map[string]interface{}{ | ||||||
| 					Extra: map[string]interface{}{ | 					"ID":     fmt.Sprintf("foo%d", idx), | ||||||
| 						"ID":     fmt.Sprintf("foo%d", idx), | 					"Format": "tar.gz", | ||||||
| 						"Format": "tar.gz", | 				}, | ||||||
| 					}, |  | ||||||
| 				}) |  | ||||||
| 			}) | 			}) | ||||||
| 		} | 		} | ||||||
| 		client := &DummyClient{} | 		client := &DummyClient{} | ||||||
| @@ -575,7 +537,7 @@ func TestRunPipeBinaryRelease(t *testing.T) { | |||||||
| 		config.Project{ | 		config.Project{ | ||||||
| 			Brews: []config.Homebrew{ | 			Brews: []config.Homebrew{ | ||||||
| 				{ | 				{ | ||||||
| 					GitHub: config.Repo{ | 					Tap: config.Repo{ | ||||||
| 						Owner: "test", | 						Owner: "test", | ||||||
| 						Name:  "test", | 						Name:  "test", | ||||||
| 					}, | 					}, | ||||||
| @@ -604,7 +566,7 @@ func TestRunPipeNoUpload(t *testing.T) { | |||||||
| 		Release:     config.Release{}, | 		Release:     config.Release{}, | ||||||
| 		Brews: []config.Homebrew{ | 		Brews: []config.Homebrew{ | ||||||
| 			{ | 			{ | ||||||
| 				GitHub: config.Repo{ | 				Tap: config.Repo{ | ||||||
| 					Owner: "test", | 					Owner: "test", | ||||||
| 					Name:  "test", | 					Name:  "test", | ||||||
| 				}, | 				}, | ||||||
| @@ -656,7 +618,7 @@ func TestRunEmptyTokenType(t *testing.T) { | |||||||
| 		Release:     config.Release{}, | 		Release:     config.Release{}, | ||||||
| 		Brews: []config.Homebrew{ | 		Brews: []config.Homebrew{ | ||||||
| 			{ | 			{ | ||||||
| 				GitHub: config.Repo{ | 				Tap: config.Repo{ | ||||||
| 					Owner: "test", | 					Owner: "test", | ||||||
| 					Name:  "test", | 					Name:  "test", | ||||||
| 				}, | 				}, | ||||||
| @@ -679,7 +641,7 @@ func TestRunEmptyTokenType(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 	}) | 	}) | ||||||
| 	client := &DummyClient{} | 	client := &DummyClient{} | ||||||
| 	assert.Equal(t, ErrEmptyTokenType, doRun(ctx, ctx.Config.Brews[0], client)) | 	assert.NoError(t, doRun(ctx, ctx.Config.Brews[0], client)) | ||||||
| } | } | ||||||
|  |  | ||||||
| func TestRunTokenTypeNotImplementedForBrew(t *testing.T) { | func TestRunTokenTypeNotImplementedForBrew(t *testing.T) { | ||||||
| @@ -691,7 +653,7 @@ func TestRunTokenTypeNotImplementedForBrew(t *testing.T) { | |||||||
| 		Release:     config.Release{}, | 		Release:     config.Release{}, | ||||||
| 		Brews: []config.Homebrew{ | 		Brews: []config.Homebrew{ | ||||||
| 			{ | 			{ | ||||||
| 				GitHub: config.Repo{ | 				Tap: config.Repo{ | ||||||
| 					Owner: "test", | 					Owner: "test", | ||||||
| 					Name:  "test", | 					Name:  "test", | ||||||
| 				}, | 				}, | ||||||
| @@ -714,7 +676,7 @@ func TestRunTokenTypeNotImplementedForBrew(t *testing.T) { | |||||||
| 			"Format": "tar.gz", | 			"Format": "tar.gz", | ||||||
| 		}, | 		}, | ||||||
| 	}) | 	}) | ||||||
| 	client := &DummyClient{} | 	client := &DummyClient{NotImplemented: true} | ||||||
| 	assert.Equal(t, ErrTokenTypeNotImplementedForBrew{TokenType: "gitea"}, doRun(ctx, ctx.Config.Brews[0], client)) | 	assert.Equal(t, ErrTokenTypeNotImplementedForBrew{TokenType: "gitea"}, doRun(ctx, ctx.Config.Brews[0], client)) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -764,20 +726,29 @@ func TestGHFolder(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| type DummyClient struct { | type DummyClient struct { | ||||||
| 	CreatedFile bool | 	CreatedFile    bool | ||||||
| 	Content     string | 	Content        string | ||||||
|  | 	NotImplemented bool | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) CreateRelease(ctx *context.Context, body string) (releaseID string, err error) { | func (dc *DummyClient) CreateRelease(ctx *context.Context, body string) (releaseID string, err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | func (dc *DummyClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
| 	client.CreatedFile = true | 	if dc.NotImplemented { | ||||||
| 	client.Content = string(content) | 		return "", client.NotImplementedError{} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return "https://dummyhost/download/{{ .Tag }}/{{ .ArtifactName }}", nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (dc *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||||
|  | 	dc.CreatedFile = true | ||||||
|  | 	dc.Content = string(content) | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) Upload(ctx *context.Context, releaseID string, artifact *artifact.Artifact, file *os.File) (err error) { | func (dc *DummyClient) Upload(ctx *context.Context, releaseID string, artifact *artifact.Artifact, file *os.File) (err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class CustomBlock < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class CustomDownloadStrategy < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz", :using => GitHubPrivateRepositoryReleaseDownloadStrategy |     url "https://dummyhost/download/v1.0.1/bin.tar.gz", :using => GitHubPrivateRepositoryReleaseDownloadStrategy | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ class CustomRequire < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz", :using => CustomDownloadStrategy |     url "https://dummyhost/download/v1.0.1/bin.tar.gz", :using => CustomDownloadStrategy | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class Default < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ class DefaultGitlab < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://gitlab.com/test/test/uploads/820ead5d9d2266c728dce6d4d55b6460/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|   end |   end | ||||||
|   | |||||||
| @@ -1,40 +0,0 @@ | |||||||
| # This file was generated by GoReleaser. DO NOT EDIT. |  | ||||||
| class GithubEnterpriseUrl < Formula |  | ||||||
|   desc "A run pipe test formula and FOO=foo_is_bar" |  | ||||||
|   homepage "https://github.com/goreleaser" |  | ||||||
|   version "1.0.1" |  | ||||||
|   bottle :unneeded |  | ||||||
|  |  | ||||||
|   if OS.mac? |  | ||||||
|     url "http://github.example.org/test/test/releases/download/v1.0.1/bin.tar.gz" |  | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |  | ||||||
|   elsif OS.linux? |  | ||||||
|   end |  | ||||||
|    |  | ||||||
|   depends_on "zsh" => :optional |  | ||||||
|   depends_on "bash" |  | ||||||
|    |  | ||||||
|   conflicts_with "gtk+" |  | ||||||
|   conflicts_with "qt" |  | ||||||
|  |  | ||||||
|   def install |  | ||||||
|     bin.install "github_enterprise_url" |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   def caveats; <<~EOS |  | ||||||
|     don't do this github_enterprise_url |  | ||||||
|   EOS |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   plist_options :startup => false |  | ||||||
|  |  | ||||||
|   def plist; <<~EOS |  | ||||||
|     <xml>whatever</xml> |  | ||||||
|   EOS |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   test do |  | ||||||
|     system "true" |  | ||||||
|     system "#{bin}/foo -h" |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| # This file was generated by GoReleaser. DO NOT EDIT. |  | ||||||
| class GitlabEnterpriseUrl < Formula |  | ||||||
|   desc "A run pipe test formula and FOO=foo_is_bar" |  | ||||||
|   homepage "https://gitlab.com/goreleaser" |  | ||||||
|   version "1.0.1" |  | ||||||
|   bottle :unneeded |  | ||||||
|  |  | ||||||
|   if OS.mac? |  | ||||||
|     url "https://gitlab.my-company.org/test/test/uploads/820ead5d9d2266c728dce6d4d55b6460/bin.tar.gz" |  | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |  | ||||||
|   elsif OS.linux? |  | ||||||
|   end |  | ||||||
|    |  | ||||||
|   depends_on "zsh" => :optional |  | ||||||
|   depends_on "bash" |  | ||||||
|    |  | ||||||
|   conflicts_with "gtk+" |  | ||||||
|   conflicts_with "qt" |  | ||||||
|  |  | ||||||
|   def install |  | ||||||
|     bin.install "gitlab_enterprise_url" |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   def caveats; <<~EOS |  | ||||||
|     don't do this gitlab_enterprise_url |  | ||||||
|   EOS |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   plist_options :startup => false |  | ||||||
|  |  | ||||||
|   def plist; <<~EOS |  | ||||||
|     <xml>whatever</xml> |  | ||||||
|   EOS |  | ||||||
|   end |  | ||||||
|  |  | ||||||
|   test do |  | ||||||
|     system "true" |  | ||||||
|     system "#{bin}/foo -h" |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| @@ -6,15 +6,15 @@ class MultipleArmv5 < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|     if Hardware::CPU.arm? |     if Hardware::CPU.arm? | ||||||
|       if Hardware::CPU.is_64_bit? |       if Hardware::CPU.is_64_bit? | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/arm64.tar.gz" |         url "https://dummyhost/download/v1.0.1/arm64.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       else |       else | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/armv5.tar.gz" |         url "https://dummyhost/download/v1.0.1/armv5.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   | |||||||
| @@ -6,15 +6,15 @@ class MultipleArmv6 < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|     if Hardware::CPU.arm? |     if Hardware::CPU.arm? | ||||||
|       if Hardware::CPU.is_64_bit? |       if Hardware::CPU.is_64_bit? | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/arm64.tar.gz" |         url "https://dummyhost/download/v1.0.1/arm64.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       else |       else | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/armv6.tar.gz" |         url "https://dummyhost/download/v1.0.1/armv6.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   | |||||||
| @@ -6,15 +6,15 @@ class MultipleArmv7 < Formula | |||||||
|   bottle :unneeded |   bottle :unneeded | ||||||
|  |  | ||||||
|   if OS.mac? |   if OS.mac? | ||||||
|     url "https://github.com/test/test/releases/download/v1.0.1/bin.tar.gz" |     url "https://dummyhost/download/v1.0.1/bin.tar.gz" | ||||||
|     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |     sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|   elsif OS.linux? |   elsif OS.linux? | ||||||
|     if Hardware::CPU.arm? |     if Hardware::CPU.arm? | ||||||
|       if Hardware::CPU.is_64_bit? |       if Hardware::CPU.is_64_bit? | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/arm64.tar.gz" |         url "https://dummyhost/download/v1.0.1/arm64.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       else |       else | ||||||
|         url "https://github.com/test/test/releases/download/v1.0.1/armv7.tar.gz" |         url "https://dummyhost/download/v1.0.1/armv7.tar.gz" | ||||||
|         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" |         sha256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| package defaults | package defaults | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"github.com/goreleaser/goreleaser/internal/client" | ||||||
| 	"github.com/goreleaser/goreleaser/internal/middleware" | 	"github.com/goreleaser/goreleaser/internal/middleware" | ||||||
| 	"github.com/goreleaser/goreleaser/pkg/context" | 	"github.com/goreleaser/goreleaser/pkg/context" | ||||||
| 	"github.com/goreleaser/goreleaser/pkg/defaults" | 	"github.com/goreleaser/goreleaser/pkg/defaults" | ||||||
| @@ -21,10 +22,10 @@ func (Pipe) Run(ctx *context.Context) error { | |||||||
| 		ctx.Config.Dist = "dist" | 		ctx.Config.Dist = "dist" | ||||||
| 	} | 	} | ||||||
| 	if ctx.Config.GitHubURLs.Download == "" { | 	if ctx.Config.GitHubURLs.Download == "" { | ||||||
| 		ctx.Config.GitHubURLs.Download = "https://github.com" | 		ctx.Config.GitHubURLs.Download = client.DefaultGitHubDownloadURL | ||||||
| 	} | 	} | ||||||
| 	if ctx.Config.GitLabURLs.Download == "" { | 	if ctx.Config.GitLabURLs.Download == "" { | ||||||
| 		ctx.Config.GitLabURLs.Download = "https://gitlab.com" | 		ctx.Config.GitLabURLs.Download = client.DefaultGitLabDownloadURL | ||||||
| 	} | 	} | ||||||
| 	for _, defaulter := range defaults.Defaulters { | 	for _, defaulter := range defaults.Defaulters { | ||||||
| 		if err := middleware.Logging( | 		if err := middleware.Logging( | ||||||
|   | |||||||
| @@ -546,6 +546,10 @@ func (c *DummyClient) CreateRelease(ctx *context.Context, body string) (releaseI | |||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (c *DummyClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
|  | 	return "", nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func (c *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | func (c *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ import ( | |||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"errors" | 	"errors" | ||||||
| 	"fmt" |  | ||||||
| 	"path/filepath" | 	"path/filepath" | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| @@ -88,7 +87,11 @@ func doRun(ctx *context.Context, client client.Client) error { | |||||||
|  |  | ||||||
| 	var path = ctx.Config.Scoop.Name + ".json" | 	var path = ctx.Config.Scoop.Name + ".json" | ||||||
|  |  | ||||||
| 	content, err := buildManifest(ctx, archives) | 	data, err := dataFor(ctx, client, archives) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	content, err := doBuildManifest(data) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| @@ -143,8 +146,17 @@ type Resource struct { | |||||||
| 	Hash string   `json:"hash"` // the archive checksum | 	Hash string   `json:"hash"` // the archive checksum | ||||||
| } | } | ||||||
|  |  | ||||||
| func buildManifest(ctx *context.Context, artifacts []*artifact.Artifact) (bytes.Buffer, error) { | func doBuildManifest(manifest Manifest) (bytes.Buffer, error) { | ||||||
| 	var result bytes.Buffer | 	var result bytes.Buffer | ||||||
|  | 	data, err := json.MarshalIndent(manifest, "", "    ") | ||||||
|  | 	if err != nil { | ||||||
|  | 		return result, err | ||||||
|  | 	} | ||||||
|  | 	_, err = result.Write(data) | ||||||
|  | 	return result, err | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func dataFor(ctx *context.Context, cl client.Client, artifacts []*artifact.Artifact) (Manifest, error) { | ||||||
| 	var manifest = Manifest{ | 	var manifest = Manifest{ | ||||||
| 		Version:      ctx.Version, | 		Version:      ctx.Version, | ||||||
| 		Architecture: map[string]Resource{}, | 		Architecture: map[string]Resource{}, | ||||||
| @@ -155,24 +167,14 @@ func buildManifest(ctx *context.Context, artifacts []*artifact.Artifact) (bytes. | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if ctx.Config.Scoop.URLTemplate == "" { | 	if ctx.Config.Scoop.URLTemplate == "" { | ||||||
| 		switch ctx.TokenType { | 		url, err := cl.ReleaseURLTemplate(ctx) | ||||||
| 		case context.TokenTypeGitHub: | 		if err != nil { | ||||||
| 			ctx.Config.Scoop.URLTemplate = fmt.Sprintf( | 			if client.IsNotImplementedErr(err) { | ||||||
| 				"%s/%s/%s/releases/download/{{ .Tag }}/{{ .ArtifactName }}", | 				return manifest, ErrTokenTypeNotImplementedForScoop | ||||||
| 				ctx.Config.GitHubURLs.Download, | 			} | ||||||
| 				ctx.Config.Release.GitHub.Owner, | 			return manifest, err | ||||||
| 				ctx.Config.Release.GitHub.Name, |  | ||||||
| 			) |  | ||||||
| 		case context.TokenTypeGitLab: |  | ||||||
| 			ctx.Config.Scoop.URLTemplate = fmt.Sprintf( |  | ||||||
| 				"%s/%s/%s/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}", |  | ||||||
| 				ctx.Config.GitLabURLs.Download, |  | ||||||
| 				ctx.Config.Release.GitLab.Owner, |  | ||||||
| 				ctx.Config.Release.GitLab.Name, |  | ||||||
| 			) |  | ||||||
| 		default: |  | ||||||
| 			return result, ErrTokenTypeNotImplementedForScoop |  | ||||||
| 		} | 		} | ||||||
|  | 		ctx.Config.Scoop.URLTemplate = url | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for _, artifact := range artifacts { | 	for _, artifact := range artifacts { | ||||||
| @@ -185,12 +187,12 @@ func buildManifest(ctx *context.Context, artifacts []*artifact.Artifact) (bytes. | |||||||
| 			WithArtifact(artifact, map[string]string{}). | 			WithArtifact(artifact, map[string]string{}). | ||||||
| 			Apply(ctx.Config.Scoop.URLTemplate) | 			Apply(ctx.Config.Scoop.URLTemplate) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return result, err | 			return manifest, err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		sum, err := artifact.Checksum("sha256") | 		sum, err := artifact.Checksum("sha256") | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return result, err | 			return manifest, err | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		log.WithFields(log.Fields{ | 		log.WithFields(log.Fields{ | ||||||
| @@ -207,12 +209,7 @@ func buildManifest(ctx *context.Context, artifacts []*artifact.Artifact) (bytes. | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	data, err := json.MarshalIndent(manifest, "", "    ") | 	return manifest, nil | ||||||
| 	if err != nil { |  | ||||||
| 		return result, err |  | ||||||
| 	} |  | ||||||
| 	_, err = result.Write(data) |  | ||||||
| 	return result, err |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func binaries(a *artifact.Artifact) []string { | func binaries(a *artifact.Artifact) []string { | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| package scoop | package scoop | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	ctx "context" | ||||||
| 	"flag" | 	"flag" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
| @@ -385,7 +386,7 @@ func Test_doRun(t *testing.T) { | |||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 				&DummyClient{}, | 				&DummyClient{NotImplemented: true}, | ||||||
| 			}, | 			}, | ||||||
| 			[]*artifact.Artifact{ | 			[]*artifact.Artifact{ | ||||||
| 				{Name: "foo_1.0.1_windows_amd64.tar.gz", Goos: "windows", Goarch: "amd64", Path: file}, | 				{Name: "foo_1.0.1_windows_amd64.tar.gz", Goos: "windows", Goarch: "amd64", Path: file}, | ||||||
| @@ -756,6 +757,7 @@ func Test_buildManifest(t *testing.T) { | |||||||
| 		{ | 		{ | ||||||
| 			"testdata/test_buildmanifest.json.golden", | 			"testdata/test_buildmanifest.json.golden", | ||||||
| 			&context.Context{ | 			&context.Context{ | ||||||
|  | 				Context:   ctx.Background(), | ||||||
| 				TokenType: context.TokenTypeGitHub, | 				TokenType: context.TokenTypeGitHub, | ||||||
| 				Git: context.GitInfo{ | 				Git: context.GitInfo{ | ||||||
| 					CurrentTag: "v1.0.1", | 					CurrentTag: "v1.0.1", | ||||||
| @@ -792,6 +794,7 @@ func Test_buildManifest(t *testing.T) { | |||||||
| 		{ | 		{ | ||||||
| 			"testdata/test_buildmanifest_url_template.json.golden", | 			"testdata/test_buildmanifest_url_template.json.golden", | ||||||
| 			&context.Context{ | 			&context.Context{ | ||||||
|  | 				Context:   ctx.Background(), | ||||||
| 				TokenType: context.TokenTypeGitHub, | 				TokenType: context.TokenTypeGitHub, | ||||||
| 				Git: context.GitInfo{ | 				Git: context.GitInfo{ | ||||||
| 					CurrentTag: "v1.0.1", | 					CurrentTag: "v1.0.1", | ||||||
| @@ -833,6 +836,7 @@ func Test_buildManifest(t *testing.T) { | |||||||
| 		{ | 		{ | ||||||
| 			"testdata/test_buildmanifest_gitlab_url_template.json.golden", | 			"testdata/test_buildmanifest_gitlab_url_template.json.golden", | ||||||
| 			&context.Context{ | 			&context.Context{ | ||||||
|  | 				Context:   ctx.Background(), | ||||||
| 				TokenType: context.TokenTypeGitLab, | 				TokenType: context.TokenTypeGitLab, | ||||||
| 				Git: context.GitInfo{ | 				Git: context.GitInfo{ | ||||||
| 					CurrentTag: "v1.0.1", | 					CurrentTag: "v1.0.1", | ||||||
| @@ -878,7 +882,11 @@ func Test_buildManifest(t *testing.T) { | |||||||
| 			var ctx = tt.ctx | 			var ctx = tt.ctx | ||||||
| 			err := Pipe{}.Default(ctx) | 			err := Pipe{}.Default(ctx) | ||||||
| 			require.NoError(t, err) | 			require.NoError(t, err) | ||||||
| 			out, err := buildManifest(ctx, []*artifact.Artifact{ |  | ||||||
|  | 			cl, err := client.New(ctx) | ||||||
|  | 			require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 			mf, err := dataFor(ctx, cl, []*artifact.Artifact{ | ||||||
| 				{ | 				{ | ||||||
| 					Name:   "foo_1.0.1_windows_amd64.tar.gz", | 					Name:   "foo_1.0.1_windows_amd64.tar.gz", | ||||||
| 					Goos:   "windows", | 					Goos:   "windows", | ||||||
| @@ -914,7 +922,9 @@ func Test_buildManifest(t *testing.T) { | |||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			}) | 			}) | ||||||
|  | 			require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 			out, err := doBuildManifest(mf) | ||||||
| 			require.NoError(t, err) | 			require.NoError(t, err) | ||||||
|  |  | ||||||
| 			if *update { | 			if *update { | ||||||
| @@ -971,7 +981,9 @@ func TestWrapInDirectory(t *testing.T) { | |||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 	require.NoError(t, Pipe{}.Default(ctx)) | 	require.NoError(t, Pipe{}.Default(ctx)) | ||||||
| 	out, err := buildManifest(ctx, []*artifact.Artifact{ | 	cl, err := client.New(ctx) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  | 	mf, err := dataFor(ctx, cl, []*artifact.Artifact{ | ||||||
| 		{ | 		{ | ||||||
| 			Name:   "foo_1.0.1_windows_amd64.tar.gz", | 			Name:   "foo_1.0.1_windows_amd64.tar.gz", | ||||||
| 			Goos:   "windows", | 			Goos:   "windows", | ||||||
| @@ -991,7 +1003,9 @@ func TestWrapInDirectory(t *testing.T) { | |||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 	}) | 	}) | ||||||
|  | 	require.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	out, err := doBuildManifest(mf) | ||||||
| 	require.NoError(t, err) | 	require.NoError(t, err) | ||||||
|  |  | ||||||
| 	var golden = "testdata/test_buildmanifest_wrap.json.golden" | 	var golden = "testdata/test_buildmanifest_wrap.json.golden" | ||||||
| @@ -1004,20 +1018,28 @@ func TestWrapInDirectory(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| type DummyClient struct { | type DummyClient struct { | ||||||
| 	CreatedFile bool | 	CreatedFile    bool | ||||||
| 	Content     string | 	Content        string | ||||||
|  | 	NotImplemented bool | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) CreateRelease(ctx *context.Context, body string) (releaseID string, err error) { | func (dc *DummyClient) CreateRelease(ctx *context.Context, body string) (releaseID string, err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | func (dc *DummyClient) ReleaseURLTemplate(ctx *context.Context) (string, error) { | ||||||
| 	client.CreatedFile = true | 	if dc.NotImplemented { | ||||||
| 	client.Content = string(content) | 		return "", client.NotImplementedError{} | ||||||
|  | 	} | ||||||
|  | 	return "", nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (dc *DummyClient) CreateFile(ctx *context.Context, commitAuthor config.CommitAuthor, repo config.Repo, content []byte, path, msg string) (err error) { | ||||||
|  | 	dc.CreatedFile = true | ||||||
|  | 	dc.Content = string(content) | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
| func (client *DummyClient) Upload(ctx *context.Context, releaseID string, artifact *artifact.Artifact, file *os.File) (err error) { | func (dc *DummyClient) Upload(ctx *context.Context, releaseID string, artifact *artifact.Artifact, file *os.File) (err error) { | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|   | |||||||
| @@ -78,8 +78,7 @@ func (r Repo) String() string { | |||||||
| // Homebrew contains the brew section. | // Homebrew contains the brew section. | ||||||
| type Homebrew struct { | type Homebrew struct { | ||||||
| 	Name             string               `yaml:",omitempty"` | 	Name             string               `yaml:",omitempty"` | ||||||
| 	GitHub           Repo                 `yaml:",omitempty"` | 	Tap              Repo                 `yaml:",omitempty"` | ||||||
| 	GitLab           Repo                 `yaml:",omitempty"` |  | ||||||
| 	CommitAuthor     CommitAuthor         `yaml:"commit_author,omitempty"` | 	CommitAuthor     CommitAuthor         `yaml:"commit_author,omitempty"` | ||||||
| 	Folder           string               `yaml:",omitempty"` | 	Folder           string               `yaml:",omitempty"` | ||||||
| 	Caveats          string               `yaml:",omitempty"` | 	Caveats          string               `yaml:",omitempty"` | ||||||
| @@ -97,6 +96,10 @@ type Homebrew struct { | |||||||
| 	CustomBlock      string               `yaml:"custom_block,omitempty"` | 	CustomBlock      string               `yaml:"custom_block,omitempty"` | ||||||
| 	IDs              []string             `yaml:"ids,omitempty"` | 	IDs              []string             `yaml:"ids,omitempty"` | ||||||
| 	Goarm            string               `yaml:"goarm,omitempty"` | 	Goarm            string               `yaml:"goarm,omitempty"` | ||||||
|  |  | ||||||
|  | 	// Deprecated in favour of Tap | ||||||
|  | 	GitHub Repo `yaml:",omitempty"` | ||||||
|  | 	GitLab Repo `yaml:",omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // Scoop contains the scoop.sh section. | // Scoop contains the scoop.sh section. | ||||||
|   | |||||||
| @@ -39,17 +39,11 @@ brews: | |||||||
|     # NOTE: make sure the url_template, the token and given repo (github or gitlab) owner and name are from the |     # NOTE: make sure the url_template, the token and given repo (github or gitlab) owner and name are from the | ||||||
|     # same kind. We will probably unify this in the next major version like it is done with scoop. |     # same kind. We will probably unify this in the next major version like it is done with scoop. | ||||||
|  |  | ||||||
|     # Github repository to push the tap to. |     # GitHub/GitLab repository to push the formula to | ||||||
|     github: |  | ||||||
|       owner: github-user |  | ||||||
|       name: homebrew-tap |  | ||||||
|  |  | ||||||
|     # OR Gitlab |  | ||||||
|     # gitlab: |  | ||||||
|     #   owner: gitlab-user |  | ||||||
|     #   name: homebrew-tap |  | ||||||
|  |  | ||||||
|     # Gitea is not supported yet, but the support coming |     # Gitea is not supported yet, but the support coming | ||||||
|  |     tap: | ||||||
|  |       owner: repo-owner | ||||||
|  |       name: homebrew-tap | ||||||
|  |  | ||||||
|     # Template for the url which is determined by the given Token (github or gitlab) |     # Template for the url which is determined by the given Token (github or gitlab) | ||||||
|     # Default for github is "https://github.com/<repo_owner>/<repo_name>/releases/download/{{ .Tag }}/{{ .ArtifactName }}" |     # Default for github is "https://github.com/<repo_owner>/<repo_name>/releases/download/{{ .Tag }}/{{ .ArtifactName }}" | ||||||
|   | |||||||
| @@ -15,7 +15,61 @@ $ goreleaser check | |||||||
|  |  | ||||||
| ## Active deprecation notices | ## Active deprecation notices | ||||||
|  |  | ||||||
| None at this time. | ### brews.github | ||||||
|  |  | ||||||
|  | > since 2020-07-06 (v0.139.0) | ||||||
|  |  | ||||||
|  | GitHub section was deprecated in favour of `tap` which | ||||||
|  | reflects Homebrew's naming convention. GitHub will be picked | ||||||
|  | automatically when GitHub token is passed. | ||||||
|  |  | ||||||
|  | Change this: | ||||||
|  |  | ||||||
|  | === "Before" | ||||||
|  |     ```yaml | ||||||
|  |     brews: | ||||||
|  |       - | ||||||
|  |         github: | ||||||
|  |           owner: goreleaser | ||||||
|  |           name: homebrew-tap | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | === "After" | ||||||
|  |     ```yaml | ||||||
|  |     brews: | ||||||
|  |       - | ||||||
|  |         tap: | ||||||
|  |           owner: goreleaser | ||||||
|  |           name: homebrew-tap | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | ### brews.gitlab | ||||||
|  |  | ||||||
|  | > since 2020-07-06 (v0.139.0) | ||||||
|  |  | ||||||
|  | GitLab section was deprecated in favour of `tap` which | ||||||
|  | reflects Homebrew's naming convention. GitLab will be picked | ||||||
|  | automatically when GitLab token is passed. | ||||||
|  |  | ||||||
|  | Change this: | ||||||
|  |  | ||||||
|  | === "Before" | ||||||
|  |     ```yaml | ||||||
|  |     brews: | ||||||
|  |       - | ||||||
|  |         gitlab: | ||||||
|  |           owner: goreleaser | ||||||
|  |           name: homebrew-tap | ||||||
|  |     ``` | ||||||
|  |  | ||||||
|  | === "After" | ||||||
|  |     ```yaml | ||||||
|  |     brews: | ||||||
|  |       - | ||||||
|  |         tap: | ||||||
|  |           owner: goreleaser | ||||||
|  |           name: homebrew-tap | ||||||
|  |     ``` | ||||||
|  |  | ||||||
| <!-- | <!-- | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user