You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	even more improvements
This commit is contained in:
		| @@ -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) | ||||
| } | ||||
| @@ -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 | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 "" | ||||
| } | ||||
|   | ||||
| @@ -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
									
								
							
							
						
						
									
										46
									
								
								pipeline/build/name.go
									
									
									
									
									
										Normal 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 "" | ||||
| } | ||||
							
								
								
									
										42
									
								
								pipeline/build/name_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								pipeline/build/name_test.go
									
									
									
									
									
										Normal 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) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user