You've already forked goreleaser
							
							
				mirror of
				https://github.com/goreleaser/goreleaser.git
				synced 2025-10-30 23:58:09 +02:00 
			
		
		
		
	zip
This commit is contained in:
		
							
								
								
									
										0
									
								
								LICENSE.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								LICENSE.md
									
									
									
									
									
										Normal file
									
								
							| @@ -7,6 +7,7 @@ import ( | ||||
| 	"os/exec" | ||||
|  | ||||
| 	"github.com/goreleaser/releaser/config" | ||||
| 	"github.com/goreleaser/releaser/uname" | ||||
| ) | ||||
|  | ||||
| func Build(version string, config config.ProjectConfig) error { | ||||
| @@ -31,8 +32,8 @@ func Build(version string, config config.ProjectConfig) error { | ||||
| 			cmd.Stdout = &stdout | ||||
| 			cmd.Stderr = &stdout | ||||
| 			err := cmd.Run() | ||||
| 			fmt.Println(stdout.String()) | ||||
| 			if err != nil { | ||||
| 				fmt.Println(stdout.String()) | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| @@ -41,5 +42,5 @@ func Build(version string, config config.ProjectConfig) error { | ||||
| } | ||||
|  | ||||
| func target(os, arch, binary string) string { | ||||
| 	return "dist/" + binary + "_" + os + "_" + arch + "/" + binary | ||||
| 	return "dist/" + binary + "_" + uname.FromGo(os) + "_" + uname.FromGo(arch) + "/" + binary | ||||
| } | ||||
|   | ||||
| @@ -1,7 +1,76 @@ | ||||
| package compress | ||||
|  | ||||
| import "github.com/goreleaser/releaser/config" | ||||
| import ( | ||||
| 	"github.com/goreleaser/releaser/config" | ||||
| 	"os" | ||||
| 	"github.com/goreleaser/releaser/uname" | ||||
| 	"compress/gzip" | ||||
| 	"archive/tar" | ||||
| 	"io" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| func ArchiveAll(version string, config config.ProjectConfig) error { | ||||
| 	for _, system := range config.Build.Oses { | ||||
| 		for _, arch := range config.Build.Arches { | ||||
| 			if err := create(system, arch, config); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func create(system, arch string, config config.ProjectConfig) error { | ||||
| 	file, err := os.Create("dist/" + nameFor(system, arch, config.BinaryName) + ".tar.gz") | ||||
| 	fmt.Println("Creating", file.Name(), "...") | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer file.Close() | ||||
| 	gw := gzip.NewWriter(file) | ||||
| 	defer gw.Close() | ||||
| 	tw := tar.NewWriter(gw) | ||||
| 	defer tw.Close() | ||||
| 	for _, f := range config.FileList { | ||||
| 		if err := addFile(tw, f, f); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
| 	if err := addFile(tw, config.BinaryName, binaryName(system, arch, config.BinaryName)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func addFile(tw *tar.Writer, name, path string) error { | ||||
| 	file, err := os.Open(path) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer file.Close() | ||||
| 	stat, err := file.Stat() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	header := new(tar.Header) | ||||
| 	header.Name = name | ||||
| 	header.Size = stat.Size() | ||||
| 	header.Mode = int64(stat.Mode()) | ||||
| 	header.ModTime = stat.ModTime() | ||||
| 	if err := tw.WriteHeader(header); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	if _, err := io.Copy(tw, file); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func nameFor(system, arch, binary string) string { | ||||
| 	return binary + "_" + uname.FromGo(system) + "_" + uname.FromGo(arch) | ||||
| } | ||||
|  | ||||
| func binaryName(system, arch, binary string) string { | ||||
| 	return "dist/" + nameFor(system, arch, binary) + "/" + binary | ||||
| } | ||||
|   | ||||
| @@ -48,11 +48,6 @@ func fix(config ProjectConfig) ProjectConfig { | ||||
| 		config.FileList = []string{ | ||||
| 			"README.md", | ||||
| 			"LICENSE.md", | ||||
| 			config.BinaryName, | ||||
| 		} | ||||
| 	} else { | ||||
| 		if !contains(config.BinaryName, config.FileList) { | ||||
| 			config.FileList = append(config.FileList, config.BinaryName) | ||||
| 		} | ||||
| 	} | ||||
| 	if config.Main == "" { | ||||
|   | ||||
| @@ -5,4 +5,3 @@ import "github.com/goreleaser/releaser/config" | ||||
| func Release(version, diff string, config config.ProjectConfig) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										19
									
								
								uname/uname.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								uname/uname.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| package uname | ||||
|  | ||||
| var mapping = map[string]string{ | ||||
| 	"darwin": "Darwin", | ||||
| 	"linux":  "Linux", | ||||
| 	"freebsd":"FreeBSD", | ||||
| 	"openbsd":"OpenBSD", | ||||
| 	"netbsd": "NetBSD", | ||||
| 	"386":    "i386", | ||||
| 	"amd64":  "x86_64", | ||||
| } | ||||
|  | ||||
| func FromGo(s string) string { | ||||
| 	result := mapping[s] | ||||
| 	if result == "" { | ||||
| 		result = s | ||||
| 	} | ||||
| 	return result | ||||
| } | ||||
		Reference in New Issue
	
	Block a user