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

refactor: improved name template

Should keep the previous behavior of having binary == nametemplate
This commit is contained in:
Carlos Alexandro Becker 2017-12-29 11:47:13 -02:00
parent 876e5fbe38
commit 7910863ecd
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
5 changed files with 49 additions and 26 deletions

View File

@ -23,16 +23,21 @@ type Fields struct {
}
// NewFields returns a Fields instances filled with the data provided
func NewFields(ctx *context.Context, a artifact.Artifact, replacements map[string]string) Fields {
func NewFields(ctx *context.Context, replacements map[string]string, artifacts ...artifact.Artifact) Fields {
// This will fail if artifacts is empty - should never be though...
var binary = artifacts[0].Extra["Binary"]
if len(artifacts) > 1 {
binary = ctx.Config.ProjectName
}
return Fields{
Env: ctx.Env,
Version: ctx.Version,
Tag: ctx.Git.CurrentTag,
ProjectName: ctx.Config.ProjectName,
Binary: a.Extra["Binary"],
Os: replace(replacements, a.Goos),
Arch: replace(replacements, a.Goarch),
Arm: replace(replacements, a.Goarm),
Os: replace(replacements, artifacts[0].Goos),
Arch: replace(replacements, artifacts[0].Goarch),
Arm: replace(replacements, artifacts[0].Goarm),
Binary: binary,
}
}

View File

@ -18,7 +18,7 @@ func TestTemplate(t *testing.T) {
}
ctx.Version = "1.0.0"
ctx.Git.CurrentTag = "v1.0.0"
var fields = NewFields(ctx, artifact.Artifact{
var artifact = artifact.Artifact{
Name: "not-this-binary",
Goarch: "amd64",
Goos: "linux",
@ -26,9 +26,8 @@ func TestTemplate(t *testing.T) {
Extra: map[string]string{
"Binary": "binary",
},
}, map[string]string{
"linux": "Linux",
})
}
var fields = NewFields(ctx, map[string]string{"linux": "Linux"}, artifact)
for expect, tmpl := range map[string]string{
"bar": "{{.Env.FOO}}",
"Linux": "{{.Os}}",
@ -50,9 +49,28 @@ func TestTemplate(t *testing.T) {
}
}
func TestNewFields(t *testing.T) {
var ctx = context.New(config.Project{
ProjectName: "proj",
})
ctx.Version = "1.0.0"
ctx.Git.CurrentTag = "v1.0.0"
var artifact = artifact.Artifact{
Name: "not-this-binary",
Goarch: "amd64",
Goos: "linux",
Goarm: "6",
Extra: map[string]string{
"Binary": "binary",
},
}
var fields = NewFields(ctx, map[string]string{}, artifact, artifact)
assert.Equal(t, "proj", fields.Binary)
}
func TestInvalidTemplate(t *testing.T) {
var ctx = context.New(config.Project{})
var fields = NewFields(ctx, artifact.Artifact{}, map[string]string{})
var fields = NewFields(ctx, map[string]string{}, artifact.Artifact{})
result, err := Apply("{{.Foo}", fields)
assert.Empty(t, result)
assert.EqualError(t, err, `template: {{.Foo}:1: unexpected "}" in operand`)

View File

@ -75,11 +75,11 @@ func (Pipe) Run(ctx *context.Context) error {
return g.Wait()
}
func create(ctx *context.Context, artifacts []artifact.Artifact) error {
var format = packageFormat(ctx, artifacts[0].Goos)
func create(ctx *context.Context, binaries []artifact.Artifact) error {
var format = packageFormat(ctx, binaries[0].Goos)
folder, err := filenametemplate.Apply(
ctx.Config.Archive.NameTemplate,
filenametemplate.NewFields(ctx, artifacts[0], ctx.Config.Archive.Replacements),
filenametemplate.NewFields(ctx, ctx.Config.Archive.Replacements, binaries...),
)
if err != nil {
return err
@ -103,7 +103,7 @@ func create(ctx *context.Context, artifacts []artifact.Artifact) error {
return fmt.Errorf("failed to add %s to the archive: %s", f, err.Error())
}
}
for _, binary := range artifacts {
for _, binary := range binaries {
if err := a.Add(wrap(ctx, binary.Name, folder), binary.Path); err != nil {
return fmt.Errorf("failed to add %s -> %s to the archive: %s", binary.Path, binary.Name, err.Error())
}
@ -112,24 +112,24 @@ func create(ctx *context.Context, artifacts []artifact.Artifact) error {
Type: artifact.UploadableArchive,
Name: folder + "." + format,
Path: archivePath,
Goos: artifacts[0].Goos,
Goarch: artifacts[0].Goarch,
Goarm: artifacts[0].Goarm,
Goos: binaries[0].Goos,
Goarch: binaries[0].Goarch,
Goarm: binaries[0].Goarm,
})
return nil
}
func skip(ctx *context.Context, artifacts []artifact.Artifact) error {
for _, a := range artifacts {
log.WithField("binary", a.Name).Info("skip archiving")
var fields = filenametemplate.NewFields(ctx, a, ctx.Config.Archive.Replacements)
func skip(ctx *context.Context, binaries []artifact.Artifact) error {
for _, binary := range binaries {
log.WithField("binary", binary.Name).Info("skip archiving")
var fields = filenametemplate.NewFields(ctx, ctx.Config.Archive.Replacements, binary)
name, err := filenametemplate.Apply(ctx.Config.Archive.NameTemplate, fields)
if err != nil {
return err
}
a.Type = artifact.UploadableBinary
a.Name = name + a.Extra["Ext"]
ctx.Artifacts.Add(a)
binary.Type = artifact.UploadableBinary
binary.Name = name + binary.Extra["Ext"]
ctx.Artifacts.Add(binary)
}
return nil
}

View File

@ -88,7 +88,7 @@ func doRun(ctx *context.Context) error {
func create(ctx *context.Context, format, arch string, binaries []artifact.Artifact) error {
name, err := filenametemplate.Apply(
ctx.Config.FPM.NameTemplate,
filenametemplate.NewFields(ctx, binaries[0], ctx.Config.FPM.Replacements),
filenametemplate.NewFields(ctx, ctx.Config.FPM.Replacements, binaries...),
)
if err != nil {
return err

View File

@ -102,7 +102,7 @@ func create(ctx *context.Context, arch string, binaries []artifact.Artifact) err
var log = log.WithField("arch", arch)
folder, err := filenametemplate.Apply(
ctx.Config.Snapcraft.NameTemplate,
filenametemplate.NewFields(ctx, binaries[0], ctx.Config.Snapcraft.Replacements),
filenametemplate.NewFields(ctx, ctx.Config.Snapcraft.Replacements, binaries...),
)
if err != nil {
return err