From 7d7951a223f5502af98a4c9b86ce0c5af22adf41 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Thu, 17 Jan 2019 10:50:00 -0200 Subject: [PATCH] feat: template on flags (#923) --- internal/builders/golang/build.go | 6 +++++- internal/builders/golang/build_test.go | 24 ++++++++++++++++++++++++ www/content/build.md | 3 ++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index f1e490a92..b3651aaeb 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -60,7 +60,11 @@ func (*Builder) Build(ctx *context.Context, build config.Build, options api.Opti } cmd := []string{"go", "build"} - cmd = append(cmd, build.Flags...) + flags, err := processFlags(ctx, build.Flags, "") + if err != nil { + return err + } + cmd = append(cmd, flags...) asmflags, err := processFlags(ctx, build.Asmflags, "-asmflags=") if err != nil { diff --git a/internal/builders/golang/build_test.go b/internal/builders/golang/build_test.go index 77af0a369..5099efcfb 100644 --- a/internal/builders/golang/build_test.go +++ b/internal/builders/golang/build_test.go @@ -91,10 +91,12 @@ func TestBuild(t *testing.T) { }, Asmflags: []string{".=", "all="}, Gcflags: []string{"all="}, + Flags: []string{"{{.Env.GO_FLAGS}}"}, }, }, } var ctx = context.New(config) + ctx.Env["GO_FLAGS"] = "-v" ctx.Git.CurrentTag = "5.6.7" var build = ctx.Config.Builds[0] for _, target := range build.Targets { @@ -277,6 +279,28 @@ func TestRunInvalidLdflags(t *testing.T) { assert.EqualError(t, err, `template: tmpl:1: unexpected "}" in operand`) } +func TestRunInvalidFlags(t *testing.T) { + folder, back := testlib.Mktmp(t) + defer back() + writeGoodMain(t, folder) + var config = config.Project{ + Builds: []config.Build{ + { + Binary: "nametest", + Flags: []string{"{{.Env.GOOS}"}, + Targets: []string{ + runtimeTarget, + }, + }, + }, + } + var ctx = context.New(config) + var err = Default.Build(ctx, ctx.Config.Builds[0], api.Options{ + Target: runtimeTarget, + }) + assert.EqualError(t, err, `template: tmpl:1: unexpected "}" in operand`) +} + func TestRunPipeWithoutMainFunc(t *testing.T) { folder, back := testlib.Mktmp(t) defer back() diff --git a/www/content/build.md b/www/content/build.md index 547b9f29e..f85a2ad3e 100644 --- a/www/content/build.md +++ b/www/content/build.md @@ -25,10 +25,11 @@ builds: # Default is the name of the project directory. binary: program - # Set flags for custom build tags. + # Custom flags templates. # Default is empty. flags: - -tags=dev + - -v # Custom asmflags templates. # Default is empty.