1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-24 04:16:27 +02:00

Merge branch 'master' into dep

This commit is contained in:
Carlos Alexandro Becker 2017-03-22 21:33:19 -03:00
commit cf99722ef1
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
10 changed files with 83 additions and 6 deletions

View File

@ -2,7 +2,7 @@ language: go
go: 1.8
install: make setup
script:
- make ci
- make test
after_success:
- go get github.com/mattn/goveralls
- goveralls -coverprofile=coverage.out -service=travis-ci -repotoken="$COVERALLS_TOKEN"

View File

@ -29,7 +29,7 @@ lint: ## Run all the linters
--enable=errcheck \
--enable=vet \
--enable=vetshadow \
--deadline=1m \
--deadline=10m \
./...
ci: lint test ## Run all the tests and code checks

View File

@ -280,9 +280,14 @@ brew:
- bash
# Packages that run as a service
plist:
plist:|
<?xml version="1.0" encoding="UTF-8"?>
...
# Custom install script for brew. Default: "bin.install "program"
install:|
bin.install "program"
...
```
By defining the `brew` section, GoReleaser will take care of publishing the Homebrew tap.

View File

@ -12,6 +12,7 @@ type Homebrew struct {
Folder string
Caveats string
Plist string
Install string
Dependencies []string
Conflicts []string
}

View File

@ -38,7 +38,9 @@ const formula = `class {{ .Name }} < Formula
{{- end }}
def install
bin.install "{{ .BinaryName }}"
{{- range $index, $element := .Install }}
{{ . -}}
{{- end }}
end
{{- if .Caveats }}
@ -71,6 +73,7 @@ type templateData struct {
Format string
SHA256 string
Plist string
Install []string
Dependencies []string
Conflicts []string
}
@ -188,6 +191,7 @@ func dataFor(
Dependencies: ctx.Config.Brew.Dependencies,
Conflicts: ctx.Config.Brew.Conflicts,
Plist: ctx.Config.Brew.Plist,
Install: strings.Split(ctx.Config.Brew.Install, "\n"),
}, err
}

View File

@ -29,7 +29,6 @@ var defaultTemplateData = templateData{
File: "test_Darwin_x86_64",
SHA256: "1633f61598ab0791e213135923624eb342196b3494909c91899bcd0560f84c68",
Format: "tar.gz",
Plist: "it works",
}
func assertDefaultTemplateData(t *testing.T, formulae string) {
@ -39,7 +38,6 @@ func assertDefaultTemplateData(t *testing.T, formulae string) {
assert.Contains(formulae, "url \"https://github.com/caarlos0/test/releases/download/v0.1.3/test_Darwin_x86_64.tar.gz\"")
assert.Contains(formulae, "sha256 \"1633f61598ab0791e213135923624eb342196b3494909c91899bcd0560f84c68\"")
assert.Contains(formulae, "version \"0.1.3\"")
assert.Contains(formulae, "bin.install \"test\"")
}
func TestFullFormulae(t *testing.T) {
@ -48,6 +46,8 @@ func TestFullFormulae(t *testing.T) {
data.Caveats = "Here are some caveats"
data.Dependencies = []string{"gtk", "git"}
data.Conflicts = []string{"conflicting_dep"}
data.Plist = "it works"
data.Install = []string{"custom install script", "another install script"}
out, err := doBuildFormula(data)
assert.NoError(err)
formulae := out.String()
@ -57,6 +57,8 @@ func TestFullFormulae(t *testing.T) {
assert.Contains(formulae, "depends_on \"gtk\"")
assert.Contains(formulae, "depends_on \"git\"")
assert.Contains(formulae, "conflicts_with \"conflicting_dep\"")
assert.Contains(formulae, "custom install script")
assert.Contains(formulae, "another install script")
assert.Contains(formulae, "def plist;")
}
@ -68,4 +70,5 @@ func TestFormulaeSimple(t *testing.T) {
assertDefaultTemplateData(t, formulae)
assert.NotContains(formulae, "def caveats")
assert.NotContains(formulae, "depends_on")
assert.NotContains(formulae, "def plist;")
}

View File

@ -26,6 +26,9 @@ func (Pipe) Run(ctx *context.Context) error {
for _, goarch := range ctx.Config.Build.Goarch {
goos := goos
goarch := goarch
if !valid(goos, goarch) {
continue
}
name, err := nameFor(ctx, goos, goarch)
if err != nil {
return err
@ -75,3 +78,47 @@ func run(goos, goarch string, command []string) error {
}
return nil
}
// list from https://golang.org/doc/install/source#environment
var valids = []string{
"androidarm",
"darwin386",
"darwinamd64",
"darwinarm",
"darwinarm64",
"dragonflyamd64",
"freebsd386",
"freebsdamd64",
"freebsdarm",
"linux386",
"linuxamd64",
"linuxarm",
"linuxarm64",
"linuxppc64",
"linuxppc64le",
"linuxmips",
"linuxmipsle",
"linuxmips64",
"linuxmips64le",
"netbsd386",
"netbsdamd64",
"netbsdarm",
"openbsd386",
"openbsdamd64",
"openbsdarm",
"plan9386",
"plan9amd64",
"solarisamd64",
"windows386",
"windowsamd64",
}
func valid(goos, goarch string) bool {
var s = goos + goarch
for _, a := range valids {
if a == s {
return true
}
}
return false
}

View File

@ -0,0 +1,13 @@
package build
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestValid(t *testing.T) {
assert.True(t, valid("windows", "386"))
assert.True(t, valid("linux", "386"))
assert.False(t, valid("windows", "arm"))
}

View File

@ -69,6 +69,9 @@ func (Pipe) Run(ctx *context.Context) error {
}
ctx.Config.Archive.Files = files
}
if ctx.Config.Brew.Install == "" {
ctx.Config.Brew.Install = "bin.install \"" + ctx.Config.Build.BinaryName + "\""
}
return nil
}

View File

@ -25,6 +25,7 @@ func TestFillBasicData(t *testing.T) {
assert.Contains(ctx.Config.Build.Goos, "linux")
assert.Contains(ctx.Config.Build.Goarch, "386")
assert.Contains(ctx.Config.Build.Goarch, "amd64")
assert.Contains(ctx.Config.Brew.Install, "bin.install \"goreleaser\"")
assert.NotEmpty(
ctx.Config.Archive.Replacements,
ctx.Config.Archive.NameTemplate,