Skip to content

Commit

Permalink
feat(scoop): provide config option to change commit message (#1467)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
zlesnr committed Apr 29, 2020
1 parent 15fd80e commit 0f7ff62
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 22 deletions.
13 changes: 12 additions & 1 deletion internal/pipe/scoop/scoop.go
Expand Up @@ -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
}

Expand Down Expand Up @@ -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,
)
}

Expand Down
29 changes: 17 additions & 12 deletions internal/pipe/scoop/scoop_test.go
Expand Up @@ -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) {
Expand Down Expand Up @@ -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))
})
}
Expand Down Expand Up @@ -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"},
},
},
},
Expand Down Expand Up @@ -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"},
},
},
},
Expand Down Expand Up @@ -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"},
},
},
}
Expand Down
19 changes: 10 additions & 9 deletions pkg/config/config.go
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions www/content/scoop.md
Expand Up @@ -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/"
Expand Down

0 comments on commit 0f7ff62

Please sign in to comment.