From 4e6982a52428e4aba0f2606f2eab9a442a680924 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Sun, 21 Jan 2018 23:37:39 -0200 Subject: [PATCH] refactor: allow builders to have custom defaults --- build/build.go | 1 + internal/builders/golang/build.go | 22 +++++++++++++++++++ .../golang/{buildmatrix => }/targets.go | 5 ++--- .../golang/{buildmatrix => }/targets_test.go | 4 ++-- pipeline/build/build.go | 21 +----------------- 5 files changed, 28 insertions(+), 25 deletions(-) rename internal/builders/golang/{buildmatrix => }/targets.go (94%) rename internal/builders/golang/{buildmatrix => }/targets_test.go (98%) diff --git a/build/build.go b/build/build.go index 100bb1736..eb797f7bf 100644 --- a/build/build.go +++ b/build/build.go @@ -31,6 +31,7 @@ type Options struct { } type Builder interface { + Default(build config.Build) config.Build Build(ctx *context.Context, build config.Build, options Options) error } diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index 698ea3401..24eead119 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -27,6 +27,28 @@ func init() { type Builder struct { } +func (*Builder) Default(build config.Build) config.Build { + if build.Main == "" { + build.Main = "." + } + if len(build.Goos) == 0 { + build.Goos = []string{"linux", "darwin"} + } + if len(build.Goarch) == 0 { + build.Goarch = []string{"amd64", "386"} + } + if len(build.Goarm) == 0 { + build.Goarm = []string{"6"} + } + if build.Ldflags == "" { + build.Ldflags = "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" + } + if build.Lang == "go" && len(build.Targets) == 0 { + build.Targets = matrix(build) + } + return build +} + func (*Builder) Build(ctx *context.Context, cfg config.Build, options build.Options) error { if err := checkMain(ctx, cfg); err != nil { return err diff --git a/internal/builders/golang/buildmatrix/targets.go b/internal/builders/golang/targets.go similarity index 94% rename from internal/builders/golang/buildmatrix/targets.go rename to internal/builders/golang/targets.go index 65749d83e..56dddfdab 100644 --- a/internal/builders/golang/buildmatrix/targets.go +++ b/internal/builders/golang/targets.go @@ -1,4 +1,4 @@ -package buildmatrix +package golang import ( "fmt" @@ -18,8 +18,7 @@ func (t target) String() string { return fmt.Sprintf("%s_%s", t.os, t.arch) } -// All returns all valid build targets for a given build -func All(build config.Build) (result []string) { +func matrix(build config.Build) (result []string) { var targets []target for _, target := range allBuildTargets(build) { if !valid(target) { diff --git a/internal/builders/golang/buildmatrix/targets_test.go b/internal/builders/golang/targets_test.go similarity index 98% rename from internal/builders/golang/buildmatrix/targets_test.go rename to internal/builders/golang/targets_test.go index acee6e83d..42251bc57 100644 --- a/internal/builders/golang/buildmatrix/targets_test.go +++ b/internal/builders/golang/targets_test.go @@ -1,4 +1,4 @@ -package buildmatrix +package golang import ( "fmt" @@ -52,7 +52,7 @@ func TestAllBuildTargets(t *testing.T) { "freebsd_arm_7", "openbsd_386", "openbsd_amd64", - }, All(build)) + }, matrix(build)) } func TestGoosGoarchCombos(t *testing.T) { diff --git a/pipeline/build/build.go b/pipeline/build/build.go index 2a73ac25b..858842812 100644 --- a/pipeline/build/build.go +++ b/pipeline/build/build.go @@ -15,7 +15,6 @@ import ( // langs to init _ "github.com/goreleaser/goreleaser/internal/builders/golang" - "github.com/goreleaser/goreleaser/internal/builders/golang/buildmatrix" ) // Pipe for build @@ -56,25 +55,7 @@ func buildWithDefaults(ctx *context.Context, build config.Build) config.Build { if build.Binary == "" { build.Binary = ctx.Config.Release.GitHub.Name } - if build.Main == "" { - build.Main = "." - } - if len(build.Goos) == 0 { - build.Goos = []string{"linux", "darwin"} - } - if len(build.Goarch) == 0 { - build.Goarch = []string{"amd64", "386"} - } - if len(build.Goarm) == 0 { - build.Goarm = []string{"6"} - } - if build.Ldflags == "" { - build.Ldflags = "-s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}" - } - if build.Lang == "go" && len(build.Targets) == 0 { - build.Targets = buildmatrix.All(build) - } - return build + return builders.For(build.Lang).Default(build) } func runPipeOnBuild(ctx *context.Context, build config.Build) error {