1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

refactor: scoop defaults

This commit is contained in:
Carlos Alexandro Becker 2018-08-20 22:20:04 -03:00
parent 134e08cc67
commit 3b4f48c2ff
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
2 changed files with 29 additions and 21 deletions

View File

@ -41,6 +41,14 @@ func (Pipe) Default(ctx *context.Context) error {
if ctx.Config.Scoop.CommitAuthor.Email == "" {
ctx.Config.Scoop.CommitAuthor.Email = "goreleaser@carlosbecker.com"
}
if ctx.Config.Scoop.URLTemplate == "" {
ctx.Config.Scoop.URLTemplate = fmt.Sprintf(
"%s/%s/%s/releases/download/{{ .Tag }}/{{ .ArtifactName }}",
ctx.Config.GitHubURLs.Download,
ctx.Config.Release.GitHub.Owner,
ctx.Config.Release.GitHub.Name,
)
}
return nil
}
@ -101,8 +109,9 @@ type Resource struct {
Bin string `json:"bin"` // name of binary inside the archive
}
func buildManifest(ctx *context.Context, artifacts []artifact.Artifact) (result bytes.Buffer, err error) {
manifest := Manifest{
func buildManifest(ctx *context.Context, artifacts []artifact.Artifact) (bytes.Buffer, error) {
var result bytes.Buffer
var manifest = Manifest{
Version: ctx.Version,
Architecture: make(map[string]Resource),
Homepage: ctx.Config.Scoop.Homepage,
@ -110,23 +119,17 @@ func buildManifest(ctx *context.Context, artifacts []artifact.Artifact) (result
Description: ctx.Config.Scoop.Description,
}
var url string
if ctx.Config.Scoop.URLTemplate == "" {
ctx.Config.Scoop.URLTemplate = fmt.Sprintf("%s/%s/%s/releases/download/{{ .Tag }}/{{ .ArtifactName }}",
ctx.Config.GitHubURLs.Download,
ctx.Config.Release.GitHub.Owner,
ctx.Config.Release.GitHub.Name)
}
for _, artifact := range artifacts {
var arch = "64bit"
if artifact.Goarch == "386" {
arch = "32bit"
}
url, err = tmpl.New(ctx).WithArtifact(artifact, map[string]string{}).Apply(ctx.Config.Scoop.URLTemplate)
url, err := tmpl.New(ctx).
WithArtifact(artifact, map[string]string{}).
Apply(ctx.Config.Scoop.URLTemplate)
if err != nil {
return
return result, err
}
manifest.Architecture[arch] = Resource{
@ -137,8 +140,8 @@ func buildManifest(ctx *context.Context, artifacts []artifact.Artifact) (result
data, err := json.MarshalIndent(manifest, "", " ")
if err != nil {
return
return result, err
}
_, err = result.Write(data)
return
return result, err
}

View File

@ -14,6 +14,7 @@ import (
"github.com/goreleaser/goreleaser/pkg/config"
"github.com/goreleaser/goreleaser/pkg/context"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
var update = flag.Bool("update", false, "update .golden files")
@ -361,10 +362,12 @@ func Test_doRun(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var ctx = tt.args.ctx
for _, a := range tt.artifacts {
tt.args.ctx.Artifacts.Add(a)
ctx.Artifacts.Add(a)
}
tt.assertError(t, doRun(tt.args.ctx, tt.args.client))
require.NoError(t, Pipe{}.Default(ctx))
tt.assertError(t, doRun(ctx, tt.args.client))
})
}
}
@ -452,19 +455,21 @@ func Test_buildManifest(t *testing.T) {
}
for _, tt := range tests {
out, err := buildManifest(tt.ctx, []artifact.Artifact{
var ctx = tt.ctx
Pipe{}.Default(ctx)
out, err := buildManifest(ctx, []artifact.Artifact{
{Name: "foo_1.0.1_windows_amd64.tar.gz", Goos: "windows", Goarch: "amd64"},
{Name: "foo_1.0.1_windows_386.tar.gz", Goos: "windows", Goarch: "386"},
})
assert.NoError(t, err)
require.NoError(t, err)
if *update {
ioutil.WriteFile(tt.filename, out.Bytes(), 0655)
require.NoError(t, ioutil.WriteFile(tt.filename, out.Bytes(), 0655))
}
bts, err := ioutil.ReadFile(tt.filename)
assert.NoError(t, err)
assert.Equal(t, string(bts), out.String())
require.NoError(t, err)
require.Equal(t, string(bts), out.String())
}
}