1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-06 03:13:48 +02:00

even more improvements

This commit is contained in:
Carlos Alexandro Becker 2017-01-14 15:08:10 -02:00
parent 764f23869e
commit b18185da18
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
7 changed files with 104 additions and 105 deletions

View File

@ -1,28 +0,0 @@
package config
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestNameTemplate(t *testing.T) {
assert := assert.New(t)
// var config = ProjectConfig{
// BinaryName: "test",
// Git: GitInfo{
// CurrentTag: "v1.2.3",
// },
// Archive: ArchiveConfig{
// NameTemplate: "{{.BinaryName}}_{{.Os}}_{{.Arch}}_{{.Version}}",
// Replacements: map[string]string{
// "darwin": "Darwin",
// "amd64": "x86_64",
// },
// },
// }
// name, err := config.ArchiveName("darwin", "amd64")
// assert.NoError(err)
// assert.Equal("test_Darwin_x86_64_v1.2.3", name)
assert.True(true)
}

View File

@ -1,11 +1,6 @@
package context
import (
"bytes"
"html/template"
"github.com/goreleaser/releaser/config"
)
import "github.com/goreleaser/releaser/config"
// GitInfo includes tags and diffs used in some point
type GitInfo struct {
@ -24,43 +19,12 @@ type Context struct {
Git *GitInfo
Repo *Repo
BrewRepo *Repo
Archives []string
Archives map[string]string
}
func New(config config.ProjectConfig) *Context {
return &Context{
Config: &config,
Config: &config,
Archives: map[string]string{},
}
}
type archiveNameData struct {
Os string
Arch string
Version string
BinaryName string
}
// ArchiveName
func (context *Context) ArchiveName(goos, goarch string) (string, error) {
var data = archiveNameData{
Os: replace(context.Config.Archive.Replacements, goos),
Arch: replace(context.Config.Archive.Replacements, goarch),
Version: context.Git.CurrentTag,
BinaryName: context.Config.BinaryName,
}
var out bytes.Buffer
t, err := template.New(data.BinaryName).Parse(context.Config.Archive.NameTemplate)
if err != nil {
return "", err
}
err = t.Execute(&out, data)
return out.String(), err
}
func replace(replacements map[string]string, original string) string {
result := replacements[original]
if result == "" {
return original
}
return result
}

View File

@ -109,10 +109,7 @@ func dataFor(ctx *context.Context, client *github.Client) (result templateData,
if err != nil {
return
}
file, err := ctx.ArchiveName("darwin", "amd64")
if err != nil {
return
}
file := ctx.Archives["darwinamd64"]
sum, err := sha256sum.For("dist/" + file + "." + ctx.Config.Archive.Format)
if err != nil {
return

View File

@ -22,26 +22,26 @@ func (Pipe) Name() string {
// Run the pipe
func (Pipe) Run(ctx *context.Context) error {
var g errgroup.Group
for _, system := range ctx.Config.Build.Oses {
for _, arch := range ctx.Config.Build.Arches {
system := system
arch := arch
name, err := ctx.ArchiveName(system, arch)
for _, goos := range ctx.Config.Build.Oses {
for _, goarch := range ctx.Config.Build.Arches {
goos := goos
goarch := goarch
name, err := nameFor(ctx, goos, goarch)
if err != nil {
return err
}
ctx.Archives = append(ctx.Archives, name)
ctx.Archives[goos+goarch] = name
g.Go(func() error {
return build(name, system, arch, ctx)
return build(name, goos, goarch, ctx)
})
}
}
return g.Wait()
}
func build(name, system, arch string, ctx *context.Context) error {
func build(name, goos, goarch string, ctx *context.Context) error {
ldflags := ctx.Config.Build.Ldflags + " -X main.version=" + ctx.Git.CurrentTag
output := "dist/" + name + "/" + ctx.Config.BinaryName + extFor(system)
output := "dist/" + name + "/" + ctx.Config.BinaryName + extFor(goos)
log.Println("Building", output, "...")
cmd := exec.Command(
"go",
@ -52,8 +52,8 @@ func build(name, system, arch string, ctx *context.Context) error {
)
cmd.Env = append(
cmd.Env,
"GOOS="+system,
"GOARCH="+arch,
"GOOS="+goos,
"GOARCH="+goarch,
"GOROOT="+os.Getenv("GOROOT"),
"GOPATH="+os.Getenv("GOPATH"),
)
@ -65,10 +65,3 @@ func build(name, system, arch string, ctx *context.Context) error {
}
return nil
}
func extFor(system string) string {
if system == "windows" {
return ".exe"
}
return ""
}

View File

@ -1,15 +0,0 @@
package build
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestExtWindows(t *testing.T) {
assert.Equal(t, extFor("windows"), ".exe")
}
func TestExtOthers(t *testing.T) {
assert.Empty(t, extFor("linux"))
}

46
pipeline/build/name.go Normal file
View File

@ -0,0 +1,46 @@
package build
import (
"bytes"
"text/template"
"github.com/goreleaser/releaser/context"
)
type nameData struct {
Os string
Arch string
Version string
BinaryName string
}
func nameFor(ctx *context.Context, goos, goarch string) (string, error) {
var data = nameData{
Os: replace(ctx.Config.Archive.Replacements, goos),
Arch: replace(ctx.Config.Archive.Replacements, goarch),
Version: ctx.Git.CurrentTag,
BinaryName: ctx.Config.BinaryName,
}
var out bytes.Buffer
t, err := template.New(data.BinaryName).Parse(ctx.Config.Archive.NameTemplate)
if err != nil {
return "", err
}
err = t.Execute(&out, data)
return out.String(), err
}
func replace(replacements map[string]string, original string) string {
result := replacements[original]
if result == "" {
return original
}
return result
}
func extFor(goos string) string {
if goos == "windows" {
return ".exe"
}
return ""
}

View File

@ -0,0 +1,42 @@
package build
import (
"testing"
"github.com/goreleaser/releaser/config"
"github.com/goreleaser/releaser/context"
"github.com/stretchr/testify/assert"
)
func TestExtWindows(t *testing.T) {
assert.Equal(t, extFor("windows"), ".exe")
}
func TestExtOthers(t *testing.T) {
assert.Empty(t, extFor("linux"))
}
func TestNameFor(t *testing.T) {
assert := assert.New(t)
var config = &config.ProjectConfig{
BinaryName: "test",
Archive: config.ArchiveConfig{
NameTemplate: "{{.BinaryName}}_{{.Os}}_{{.Arch}}_{{.Version}}",
Replacements: map[string]string{
"darwin": "Darwin",
"amd64": "x86_64",
},
},
}
var ctx = &context.Context{
Config: config,
Git: &context.GitInfo{
CurrentTag: "v1.2.3",
},
}
name, err := nameFor(ctx, "darwin", "amd64")
assert.NoError(err)
assert.Equal("test_Darwin_x86_64_v1.2.3", name)
}