2017-01-14 12:34:22 -02:00
|
|
|
package defaults
|
|
|
|
|
|
|
|
import (
|
2017-01-14 19:12:20 +01:00
|
|
|
"errors"
|
2017-01-14 14:29:01 -02:00
|
|
|
"io/ioutil"
|
|
|
|
"strings"
|
2017-01-14 12:34:22 -02:00
|
|
|
|
2017-01-14 20:01:32 -02:00
|
|
|
"github.com/goreleaser/goreleaser/context"
|
2017-01-14 12:34:22 -02:00
|
|
|
)
|
|
|
|
|
2017-01-14 15:16:29 -02:00
|
|
|
var defaultFiles = []string{"licence", "license", "readme", "changelog"}
|
2017-01-14 12:34:22 -02:00
|
|
|
|
|
|
|
// Pipe for brew deployment
|
|
|
|
type Pipe struct{}
|
|
|
|
|
2017-01-14 19:41:32 +01:00
|
|
|
// Description of the pipe
|
2017-01-14 15:14:35 -02:00
|
|
|
func (Pipe) Description() string {
|
|
|
|
return "Setting defaults..."
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
|
|
|
|
|
|
|
// Run the pipe
|
2017-01-14 19:41:32 +01:00
|
|
|
func (Pipe) Run(ctx *context.Context) error {
|
2017-01-14 19:47:15 -02:00
|
|
|
if ctx.Config.Release.Repo == "" {
|
2017-01-14 19:12:20 +01:00
|
|
|
repo, err := remoteRepo()
|
2017-01-14 19:47:15 -02:00
|
|
|
ctx.Config.Release.Repo = repo
|
2017-01-14 19:12:20 +01:00
|
|
|
if err != nil {
|
2017-01-14 19:47:15 -02:00
|
|
|
return errors.New("failed reading repo from git: " + err.Error())
|
2017-01-14 19:12:20 +01:00
|
|
|
}
|
|
|
|
}
|
2017-01-14 19:47:15 -02:00
|
|
|
|
|
|
|
if ctx.Config.Build.BinaryName == "" {
|
|
|
|
ctx.Config.Build.BinaryName = strings.Split(ctx.Config.Release.Repo, "/")[1]
|
2017-01-14 19:29:30 +01:00
|
|
|
}
|
2017-01-14 14:06:57 -02:00
|
|
|
if ctx.Config.Build.Main == "" {
|
|
|
|
ctx.Config.Build.Main = "main.go"
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 19:47:15 -02:00
|
|
|
if len(ctx.Config.Build.Goos) == 0 {
|
|
|
|
ctx.Config.Build.Goos = []string{"linux", "darwin"}
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 19:47:15 -02:00
|
|
|
if len(ctx.Config.Build.Goarch) == 0 {
|
|
|
|
ctx.Config.Build.Goarch = []string{"amd64", "386"}
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 14:06:57 -02:00
|
|
|
if ctx.Config.Build.Ldflags == "" {
|
|
|
|
ctx.Config.Build.Ldflags = "-s -w"
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 19:47:15 -02:00
|
|
|
|
2017-01-14 14:06:57 -02:00
|
|
|
if ctx.Config.Archive.NameTemplate == "" {
|
|
|
|
ctx.Config.Archive.NameTemplate = "{{.BinaryName}}_{{.Os}}_{{.Arch}}"
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 14:06:57 -02:00
|
|
|
if ctx.Config.Archive.Format == "" {
|
|
|
|
ctx.Config.Archive.Format = "tar.gz"
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 14:06:57 -02:00
|
|
|
if len(ctx.Config.Archive.Replacements) == 0 {
|
|
|
|
ctx.Config.Archive.Replacements = map[string]string{
|
2017-01-14 12:34:22 -02:00
|
|
|
"darwin": "Darwin",
|
|
|
|
"linux": "Linux",
|
|
|
|
"freebsd": "FreeBSD",
|
|
|
|
"openbsd": "OpenBSD",
|
|
|
|
"netbsd": "NetBSD",
|
|
|
|
"windows": "Windows",
|
|
|
|
"386": "i386",
|
|
|
|
"amd64": "x86_64",
|
|
|
|
}
|
|
|
|
}
|
2017-01-14 19:47:15 -02:00
|
|
|
if len(ctx.Config.Archive.Files) == 0 {
|
|
|
|
files, err := findFiles()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
ctx.Config.Archive.Files = files
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
2017-01-14 19:41:32 +01:00
|
|
|
return nil
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
|
|
|
|
2017-01-14 14:38:48 -02:00
|
|
|
func findFiles() (files []string, err error) {
|
|
|
|
all, err := ioutil.ReadDir(".")
|
2017-01-14 14:29:01 -02:00
|
|
|
if err != nil {
|
2017-01-14 12:34:22 -02:00
|
|
|
return
|
|
|
|
}
|
2017-01-14 14:29:01 -02:00
|
|
|
for _, file := range all {
|
2017-01-14 14:38:48 -02:00
|
|
|
if accept(file.Name()) {
|
|
|
|
files = append(files, file.Name())
|
2017-01-14 14:29:01 -02:00
|
|
|
}
|
2017-01-14 12:34:22 -02:00
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
2017-01-14 14:38:48 -02:00
|
|
|
|
|
|
|
func accept(file string) bool {
|
|
|
|
for _, accepted := range defaultFiles {
|
2017-01-14 15:16:29 -02:00
|
|
|
if strings.HasPrefix(strings.ToLower(file), accepted) {
|
2017-01-14 14:38:48 -02:00
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|