You've already forked goreleaser
mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-11-06 09:09:29 +02:00
feat: allow to template main (#2574)
Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
This commit is contained in:
committed by
GitHub
parent
77b62757fc
commit
66cfa25f94
@@ -71,6 +71,22 @@ func (*Builder) WithDefaults(build config.Build) (config.Build, error) {
|
||||
|
||||
// Build builds a golang build.
|
||||
func (*Builder) Build(ctx *context.Context, build config.Build, options api.Options) error {
|
||||
tpl := tmpl.New(ctx)
|
||||
if build.Main != "" {
|
||||
m, err := tpl.Apply(build.Main)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
build.Main = m
|
||||
}
|
||||
if build.UnproxiedMain != "" {
|
||||
m, err := tpl.Apply(build.UnproxiedMain)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
build.UnproxiedMain = m
|
||||
}
|
||||
|
||||
if err := checkMain(build); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -615,6 +615,29 @@ func TestRunPipeWithoutMainFunc(t *testing.T) {
|
||||
Target: runtimeTarget,
|
||||
}), `build for no-main does not contain a main function`)
|
||||
})
|
||||
t.Run("using gomod.proxy and template", func(t *testing.T) {
|
||||
ctx := newCtx(t)
|
||||
ctx.Config.GoMod.Proxy = true
|
||||
ctx.Env["Main"] = "."
|
||||
ctx.Config.Builds[0].Dir = "dist/proxy/test"
|
||||
ctx.Config.Builds[0].Main = "github.com/caarlos0/test"
|
||||
ctx.Config.Builds[0].UnproxiedDir = "."
|
||||
ctx.Config.Builds[0].UnproxiedMain = "{{ .Env.Main }}"
|
||||
require.EqualError(t, Default.Build(ctx, ctx.Config.Builds[0], api.Options{
|
||||
Target: runtimeTarget,
|
||||
}), `build for no-main does not contain a main function`)
|
||||
})
|
||||
t.Run("using gomod.proxy and invalid template", func(t *testing.T) {
|
||||
ctx := newCtx(t)
|
||||
ctx.Config.GoMod.Proxy = true
|
||||
ctx.Config.Builds[0].Dir = "dist/proxy/test"
|
||||
ctx.Config.Builds[0].Main = "github.com/caarlos0/test"
|
||||
ctx.Config.Builds[0].UnproxiedDir = "."
|
||||
ctx.Config.Builds[0].UnproxiedMain = "{{ .Env.NOPE }}"
|
||||
require.EqualError(t, Default.Build(ctx, ctx.Config.Builds[0], api.Options{
|
||||
Target: runtimeTarget,
|
||||
}), `template: tmpl:1:7: executing "tmpl" at <.Env.NOPE>: map has no entry for key "NOPE"`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestRunPipeWithProxiedRepo(t *testing.T) {
|
||||
@@ -708,6 +731,19 @@ func TestRunPipeWithMainFuncNotInMainGoFile(t *testing.T) {
|
||||
Target: runtimeTarget,
|
||||
}))
|
||||
})
|
||||
t.Run("with template", func(t *testing.T) {
|
||||
ctx.Config.Builds[0].Main = "{{ .Env.Main }}"
|
||||
ctx.Env["Main"] = "."
|
||||
require.NoError(t, Default.Build(ctx, ctx.Config.Builds[0], api.Options{
|
||||
Target: runtimeTarget,
|
||||
}))
|
||||
})
|
||||
t.Run("with invalid template", func(t *testing.T) {
|
||||
ctx.Config.Builds[0].Main = "{{ .Env.NOPE }}"
|
||||
require.EqualError(t, Default.Build(ctx, ctx.Config.Builds[0], api.Options{
|
||||
Target: runtimeTarget,
|
||||
}), `template: tmpl:1:7: executing "tmpl" at <.Env.NOPE>: map has no entry for key "NOPE"`)
|
||||
})
|
||||
}
|
||||
|
||||
func TestLdFlagsFullTemplate(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user