You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	fix: several review suggestions
This commit is contained in:
		| @@ -13,14 +13,14 @@ var ( | ||||
| 	lock     sync.Mutex | ||||
| ) | ||||
|  | ||||
| // Register register a builder to a given lang | ||||
| // Register registers a builder to a given lang | ||||
| func Register(lang string, builder Builder) { | ||||
| 	lock.Lock() | ||||
| 	builders[lang] = builder | ||||
| 	lock.Unlock() | ||||
| } | ||||
|  | ||||
| // For gets the previously register builder for the given lang | ||||
| // For gets the previously registered builder for the given lang | ||||
| func For(lang string) Builder { | ||||
| 	return builders[lang] | ||||
| } | ||||
|   | ||||
| @@ -30,7 +30,7 @@ func init() { | ||||
| // Builder is golang builder | ||||
| type Builder struct{} | ||||
|  | ||||
| // WithDefaults set the defaults for a golang build | ||||
| // WithDefaults sets the defaults for a golang build and returns it | ||||
| func (*Builder) WithDefaults(build config.Build) config.Build { | ||||
| 	if build.Main == "" { | ||||
| 		build.Main = "." | ||||
| @@ -67,7 +67,10 @@ func (*Builder) Build(ctx *context.Context, build config.Build, options api.Opti | ||||
| 		return err | ||||
| 	} | ||||
| 	cmd = append(cmd, "-ldflags="+flags, "-o", options.Path, build.Main) | ||||
| 	var target = newBuildTarget(options.Target) | ||||
| 	target, err := newBuildTarget(options.Target) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	var env = append(build.Env, target.Env()...) | ||||
| 	if err := run(ctx, cmd, env); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to build for %s", options.Target) | ||||
| @@ -130,15 +133,18 @@ type buildTarget struct { | ||||
| 	os, arch, arm string | ||||
| } | ||||
|  | ||||
| func newBuildTarget(s string) buildTarget { | ||||
| func newBuildTarget(s string) (buildTarget, error) { | ||||
| 	var t = buildTarget{} | ||||
| 	parts := strings.Split(s, "_") | ||||
| 	if len(parts) < 2 { | ||||
| 		return t, fmt.Errorf("%s is not a valid build target", s) | ||||
| 	} | ||||
| 	t.os = parts[0] | ||||
| 	t.arch = parts[1] | ||||
| 	if len(parts) == 3 { | ||||
| 		t.arm = parts[2] | ||||
| 	} | ||||
| 	return t | ||||
| 	return t, nil | ||||
| } | ||||
|  | ||||
| func (b buildTarget) Env() []string { | ||||
| @@ -172,9 +178,9 @@ func checkMain(ctx *context.Context, build config.Build) error { | ||||
| 		} | ||||
| 		return fmt.Errorf("build for %s does not contain a main function", build.Binary) | ||||
| 	} | ||||
| 	file, err := parser.ParseFile(token.NewFileSet(), build.Main, nil, 0) | ||||
| 	file, err := parser.ParseFile(token.NewFileSet(), main, nil, 0) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrapf(err, "failed to parse file: %s", build.Main) | ||||
| 		return errors.Wrapf(err, "failed to parse file: %s", main) | ||||
| 	} | ||||
| 	if hasMain(file) { | ||||
| 		return nil | ||||
|   | ||||
| @@ -68,7 +68,7 @@ func TestWithDefaults(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestDefaultAndBuild(t *testing.T) { | ||||
| func TestBuild(t *testing.T) { | ||||
| 	folder, back := testlib.Mktmp(t) | ||||
| 	defer back() | ||||
| 	writeGoodMain(t, folder) | ||||
| @@ -120,6 +120,30 @@ func TestBuildFailed(t *testing.T) { | ||||
| 	assert.Empty(t, ctx.Artifacts.List()) | ||||
| } | ||||
|  | ||||
| func TestBuildInvalidTarget(t *testing.T) { | ||||
| 	folder, back := testlib.Mktmp(t) | ||||
| 	defer back() | ||||
| 	writeGoodMain(t, folder) | ||||
| 	var target = "linux" | ||||
| 	var config = config.Project{ | ||||
| 		Builds: []config.Build{ | ||||
| 			{ | ||||
| 				Binary:  "foo", | ||||
| 				Targets: []string{target}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 	var ctx = context.New(config) | ||||
| 	var build = ctx.Config.Builds[0] | ||||
| 	var err = Default.Build(ctx, build, api.Options{ | ||||
| 		Target: target, | ||||
| 		Name:   build.Binary, | ||||
| 		Path:   filepath.Join(folder, "dist", target, build.Binary), | ||||
| 	}) | ||||
| 	assert.EqualError(t, err, "linux is not a valid build target") | ||||
| 	assert.Len(t, ctx.Artifacts.List(), 0) | ||||
| } | ||||
|  | ||||
| func TestRunInvalidLdflags(t *testing.T) { | ||||
| 	folder, back := testlib.Mktmp(t) | ||||
| 	defer back() | ||||
|   | ||||
| @@ -1,2 +1,2 @@ | ||||
| // Package golang providers a Builder implementation for golang. | ||||
| // Package golang provides a Builder implementation for golang. | ||||
| package golang | ||||
|   | ||||
		Reference in New Issue
	
	Block a user