1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2024-12-31 01:53:50 +02:00

feat(scoop): provide config option to change commit message (#1467)

Without this change, users unable to control the resulting commit message of the
scoop update.  In some environments this may present an issue with commit
linters that require a specific commit message format in order to build proper
change logs and make decisions.  Here we include a Scoop config option to use a
format string provided by the user during the commit.
This commit is contained in:
Zach Leslie 2020-04-29 13:45:18 -07:00 committed by GitHub
parent 15fd80eded
commit 0f7ff6247b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 22 deletions

View File

@ -54,6 +54,10 @@ func (Pipe) Default(ctx *context.Context) error {
ctx.Config.Scoop.CommitAuthor.Email = "goreleaser@carlosbecker.com"
}
if ctx.Config.Scoop.CommitMessageTemplate == "" {
ctx.Config.Scoop.CommitMessageTemplate = "Scoop update for {{ .ProjectName }} version {{ .Tag }}"
}
return nil
}
@ -104,13 +108,20 @@ func doRun(ctx *context.Context, client client.Client) error {
if ctx.Config.Release.Disable {
return pipe.Skip("release is disabled")
}
commitMessage, err := tmpl.New(ctx).
Apply(ctx.Config.Scoop.CommitMessageTemplate)
if err != nil {
return err
}
return client.CreateFile(
ctx,
ctx.Config.Scoop.CommitAuthor,
ctx.Config.Scoop.Bucket,
content.Bytes(),
path,
fmt.Sprintf("Scoop update for %s version %s", ctx.Config.ProjectName, ctx.Git.CurrentTag),
commitMessage,
)
}

View File

@ -57,6 +57,7 @@ func TestDefault(t *testing.T) {
assert.Equal(t, ctx.Config.ProjectName, ctx.Config.Scoop.Name)
assert.NotEmpty(t, ctx.Config.Scoop.CommitAuthor.Name)
assert.NotEmpty(t, ctx.Config.Scoop.CommitAuthor.Email)
assert.NotEmpty(t, ctx.Config.Scoop.CommitMessageTemplate)
}
func Test_doRun(t *testing.T) {
@ -736,6 +737,7 @@ func Test_doRun(t *testing.T) {
ctx.Artifacts.Add(a)
}
require.NoError(t, Pipe{}.Default(ctx))
tt.assertError(t, doRun(ctx, tt.args.client))
})
}
@ -819,10 +821,11 @@ func Test_buildManifest(t *testing.T) {
Owner: "test",
Name: "test",
},
Description: "A run pipe test formula",
Homepage: "https://github.com/goreleaser",
URLTemplate: "http://github.mycompany.com/foo/bar/{{ .Tag }}/{{ .ArtifactName }}",
Persist: []string{"data.cfg", "etc"},
Description: "A run pipe test formula",
Homepage: "https://github.com/goreleaser",
URLTemplate: "http://github.mycompany.com/foo/bar/{{ .Tag }}/{{ .ArtifactName }}",
CommitMessageTemplate: "chore(scoop): update {{ .ProjectName }} version {{ .Tag }}",
Persist: []string{"data.cfg", "etc"},
},
},
},
@ -859,10 +862,11 @@ func Test_buildManifest(t *testing.T) {
Owner: "test",
Name: "test",
},
Description: "A run pipe test formula",
Homepage: "https://gitlab.com/goreleaser",
URLTemplate: "http://gitlab.mycompany.com/foo/bar/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}",
Persist: []string{"data.cfg", "etc"},
Description: "A run pipe test formula",
Homepage: "https://gitlab.com/goreleaser",
URLTemplate: "http://gitlab.mycompany.com/foo/bar/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}",
CommitMessageTemplate: "chore(scoop): update {{ .ProjectName }} version {{ .Tag }}",
Persist: []string{"data.cfg", "etc"},
},
},
},
@ -958,10 +962,11 @@ func TestWrapInDirectory(t *testing.T) {
Owner: "test",
Name: "test",
},
Description: "A run pipe test formula",
Homepage: "https://gitlab.com/goreleaser",
URLTemplate: "http://gitlab.mycompany.com/foo/bar/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}",
Persist: []string{"data.cfg", "etc"},
Description: "A run pipe test formula",
Homepage: "https://gitlab.com/goreleaser",
URLTemplate: "http://gitlab.mycompany.com/foo/bar/uploads/{{ .ArtifactUploadHash }}/{{ .ArtifactName }}",
CommitMessageTemplate: "chore(scoop): update {{ .ProjectName }} version {{ .Tag }}",
Persist: []string{"data.cfg", "etc"},
},
},
}

View File

@ -73,15 +73,16 @@ type Homebrew struct {
// Scoop contains the scoop.sh section
type Scoop struct {
Name string `yaml:",omitempty"`
Bucket Repo `yaml:",omitempty"`
CommitAuthor CommitAuthor `yaml:"commit_author,omitempty"`
Homepage string `yaml:",omitempty"`
Description string `yaml:",omitempty"`
License string `yaml:",omitempty"`
URLTemplate string `yaml:"url_template,omitempty"`
Persist []string `yaml:"persist,omitempty"`
SkipUpload string `yaml:"skip_upload,omitempty"`
Name string `yaml:",omitempty"`
Bucket Repo `yaml:",omitempty"`
CommitAuthor CommitAuthor `yaml:"commit_author,omitempty"`
CommitMessageTemplate string `yaml:"commit_msg_template,omitempty"`
Homepage string `yaml:",omitempty"`
Description string `yaml:",omitempty"`
License string `yaml:",omitempty"`
URLTemplate string `yaml:"url_template,omitempty"`
Persist []string `yaml:"persist,omitempty"`
SkipUpload string `yaml:"skip_upload,omitempty"`
}
// CommitAuthor is the author of a Git commit

View File

@ -31,6 +31,9 @@ scoop:
name: goreleaserbot
email: goreleaser@carlosbecker.com
# The project name and current git tag are used in the format string.
commit_msg_template: "Scoop update for {{ .ProjectName }} version {{ .Tag }}"
# Your app's homepage.
# Default is empty.
homepage: "https://example.com/"