mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-10 03:47:03 +02:00
Merge pull request #341 from goreleaser/skip
skip pipe as an error type and improved output
This commit is contained in:
commit
42446c8079
@ -53,7 +53,7 @@ func (ctx *Context) AddArtifact(file string) {
|
|||||||
defer artifactsLock.Unlock()
|
defer artifactsLock.Unlock()
|
||||||
file = strings.TrimPrefix(file, ctx.Config.Dist+string(filepath.Separator))
|
file = strings.TrimPrefix(file, ctx.Config.Dist+string(filepath.Separator))
|
||||||
ctx.Artifacts = append(ctx.Artifacts, file)
|
ctx.Artifacts = append(ctx.Artifacts, file)
|
||||||
log.WithField("artifact", file).Info("new artifact")
|
log.WithField("artifact", file).Info("new release artifact")
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddBinary adds a built binary to the current context
|
// AddBinary adds a built binary to the current context
|
||||||
@ -77,7 +77,7 @@ func (ctx *Context) AddBinary(platform, folder, name, path string) {
|
|||||||
WithField("folder", folder).
|
WithField("folder", folder).
|
||||||
WithField("name", name).
|
WithField("name", name).
|
||||||
WithField("path", path).
|
WithField("path", path).
|
||||||
Info("new binary")
|
Debug("new binary")
|
||||||
}
|
}
|
||||||
|
|
||||||
// New context
|
// New context
|
||||||
|
@ -84,7 +84,7 @@ func Release(flags Flags) error {
|
|||||||
ctx.RmDist = flags.Bool("rm-dist")
|
ctx.RmDist = flags.Bool("rm-dist")
|
||||||
for _, pipe := range pipes {
|
for _, pipe := range pipes {
|
||||||
log.Infof("\033[1m%s\033[0m", strings.ToUpper(pipe.Description()))
|
log.Infof("\033[1m%s\033[0m", strings.ToUpper(pipe.Description()))
|
||||||
if err := pipe.Run(ctx); err != nil {
|
if err := handle(pipe.Run(ctx)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,6 +92,18 @@ func Release(flags Flags) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handle(err error) error {
|
||||||
|
if err == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
skip, ok := err.(pipeline.ErrSkip)
|
||||||
|
if ok {
|
||||||
|
log.WithField("reason", skip.Error()).Warn("skipped")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// InitProject creates an example goreleaser.yml in the current directory
|
// InitProject creates an example goreleaser.yml in the current directory
|
||||||
func InitProject(filename string) error {
|
func InitProject(filename string) error {
|
||||||
if _, err := os.Stat(filename); !os.IsNotExist(err) {
|
if _, err := os.Stat(filename); !os.IsNotExist(err) {
|
||||||
|
@ -10,12 +10,12 @@ func All(build config.Build) (targets []Target) {
|
|||||||
for _, target := range allBuildTargets(build) {
|
for _, target := range allBuildTargets(build) {
|
||||||
if !valid(target) {
|
if !valid(target) {
|
||||||
log.WithField("target", target.PrettyString()).
|
log.WithField("target", target.PrettyString()).
|
||||||
Warn("skipped invalid build")
|
Debug("skipped invalid build")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if ignored(build, target) {
|
if ignored(build, target) {
|
||||||
log.WithField("target", target.PrettyString()).
|
log.WithField("target", target.PrettyString()).
|
||||||
Warn("skipped ignored build")
|
Debug("skipped ignored build")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
targets = append(targets, target)
|
targets = append(targets, target)
|
||||||
|
14
internal/testlib/skip.go
Normal file
14
internal/testlib/skip.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package testlib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
// AssertSkipped asserts that a pipe was skipped
|
||||||
|
func AssertSkipped(t *testing.T, err error) {
|
||||||
|
_, ok := err.(pipeline.ErrSkip)
|
||||||
|
assert.True(t, ok)
|
||||||
|
}
|
11
internal/testlib/skip_test.go
Normal file
11
internal/testlib/skip_test.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package testlib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAssertSkipped(t *testing.T) {
|
||||||
|
AssertSkipped(t, pipeline.Skip("skip"))
|
||||||
|
}
|
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
"github.com/goreleaser/goreleaser/internal/archiveformat"
|
"github.com/goreleaser/goreleaser/internal/archiveformat"
|
||||||
"github.com/goreleaser/goreleaser/internal/client"
|
"github.com/goreleaser/goreleaser/internal/client"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrNoDarwin64Build when there is no build for darwin_amd64 (goos doesn't
|
// ErrNoDarwin64Build when there is no build for darwin_amd64 (goos doesn't
|
||||||
@ -37,20 +38,16 @@ func (Pipe) Run(ctx *context.Context) error {
|
|||||||
|
|
||||||
func doRun(ctx *context.Context, client client.Client) error {
|
func doRun(ctx *context.Context, client client.Client) error {
|
||||||
if !ctx.Publish {
|
if !ctx.Publish {
|
||||||
log.Warn("skipped because --skip-publish is set")
|
return pipeline.Skip("--skip-publish is set")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if ctx.Config.Brew.GitHub.Name == "" {
|
if ctx.Config.Brew.GitHub.Name == "" {
|
||||||
log.Warn("skipped because brew section is not configured")
|
return pipeline.Skip("brew section is not configured")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if ctx.Config.Release.Draft {
|
if ctx.Config.Release.Draft {
|
||||||
log.Warn("skipped because release is marked as draft")
|
return pipeline.Skip("release is marked as draft")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if ctx.Config.Archive.Format == "binary" {
|
if ctx.Config.Archive.Format == "binary" {
|
||||||
log.Warn("skipped because archive format is binary")
|
return pipeline.Skip("archive format is binary")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var group = ctx.Binaries["darwinamd64"]
|
var group = ctx.Binaries["darwinamd64"]
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/internal/testlib"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -202,7 +203,7 @@ func TestRunPipeBrewNotSetup(t *testing.T) {
|
|||||||
Publish: true,
|
Publish: true,
|
||||||
}
|
}
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedFile)
|
assert.False(client.CreatedFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,7 +225,7 @@ func TestRunPipeBinaryRelease(t *testing.T) {
|
|||||||
}
|
}
|
||||||
ctx.AddBinary("darwinamd64", "foo", "bar", "baz")
|
ctx.AddBinary("darwinamd64", "foo", "bar", "baz")
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedFile)
|
assert.False(client.CreatedFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +235,7 @@ func TestRunPipeNoPublish(t *testing.T) {
|
|||||||
Publish: false,
|
Publish: false,
|
||||||
}
|
}
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedFile)
|
assert.False(client.CreatedFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,7 +256,7 @@ func TestRunPipeDraftRelease(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedFile)
|
assert.False(client.CreatedFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,7 +270,7 @@ func TestRunPipeFormatBinary(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedFile)
|
assert.False(client.CreatedFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ func (Pipe) Run(ctx *context.Context) (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if ctx.RmDist {
|
if ctx.RmDist {
|
||||||
log.Warn("rm-dist is set, removing ./dist")
|
log.Info("--rm-dist is set, removing ./dist")
|
||||||
return os.RemoveAll(ctx.Config.Dist)
|
return os.RemoveAll(ctx.Config.Dist)
|
||||||
}
|
}
|
||||||
files, err := ioutil.ReadDir(ctx.Config.Dist)
|
files, err := ioutil.ReadDir(ctx.Config.Dist)
|
||||||
|
8
pipeline/env/env.go
vendored
8
pipeline/env/env.go
vendored
@ -6,8 +6,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/apex/log"
|
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrMissingToken indicates an error when GITHUB_TOKEN is missing in the environment
|
// ErrMissingToken indicates an error when GITHUB_TOKEN is missing in the environment
|
||||||
@ -25,12 +25,10 @@ func (Pipe) Description() string {
|
|||||||
func (Pipe) Run(ctx *context.Context) (err error) {
|
func (Pipe) Run(ctx *context.Context) (err error) {
|
||||||
ctx.Token = os.Getenv("GITHUB_TOKEN")
|
ctx.Token = os.Getenv("GITHUB_TOKEN")
|
||||||
if !ctx.Publish {
|
if !ctx.Publish {
|
||||||
log.Warn("github token not validated because publishing has been disabled")
|
return pipeline.Skip("publishing is disabled")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if !ctx.Validate {
|
if !ctx.Validate {
|
||||||
log.Warn("skipped validations because --skip-validate is set")
|
return pipeline.Skip("--skip-validate is set")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if ctx.Token == "" {
|
if ctx.Token == "" {
|
||||||
return ErrMissingToken
|
return ErrMissingToken
|
||||||
|
3
pipeline/env/env_test.go
vendored
3
pipeline/env/env_test.go
vendored
@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/internal/testlib"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ func TestInvalidEnvChecksSkipped(t *testing.T) {
|
|||||||
Publish: flag.Publish,
|
Publish: flag.Publish,
|
||||||
Snapshot: flag.Snapshot,
|
Snapshot: flag.Snapshot,
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -27,8 +28,7 @@ func (Pipe) Description() string {
|
|||||||
// Run the pipe
|
// Run the pipe
|
||||||
func (Pipe) Run(ctx *context.Context) error {
|
func (Pipe) Run(ctx *context.Context) error {
|
||||||
if len(ctx.Config.FPM.Formats) == 0 {
|
if len(ctx.Config.FPM.Formats) == 0 {
|
||||||
log.Warn("skipping because no output formats configured")
|
return pipeline.Skip("no output formats configured")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
_, err := exec.LookPath("fpm")
|
_, err := exec.LookPath("fpm")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/internal/testlib"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -16,12 +17,11 @@ func TestDescription(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRunPipeNoFormats(t *testing.T) {
|
func TestRunPipeNoFormats(t *testing.T) {
|
||||||
var assert = assert.New(t)
|
|
||||||
var ctx = &context.Context{
|
var ctx = &context.Context{
|
||||||
Version: "1.0.0",
|
Version: "1.0.0",
|
||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRunPipe(t *testing.T) {
|
func TestRunPipe(t *testing.T) {
|
||||||
|
@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
"github.com/goreleaser/goreleaser/internal/git"
|
"github.com/goreleaser/goreleaser/internal/git"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Pipe for brew deployment
|
// Pipe for brew deployment
|
||||||
@ -43,8 +44,7 @@ func (Pipe) Run(ctx *context.Context) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !ctx.Validate {
|
if !ctx.Validate {
|
||||||
log.Warn("skipped validations because --skip-validate is set")
|
return pipeline.Skip("--skip-validate is set")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
return validate(ctx, commit, tag)
|
return validate(ctx, commit, tag)
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ func TestSingleCommit(t *testing.T) {
|
|||||||
var ctx = &context.Context{
|
var ctx = &context.Context{
|
||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ func TestNoTagsSnapshot(t *testing.T) {
|
|||||||
Snapshot: true,
|
Snapshot: true,
|
||||||
Publish: false,
|
Publish: false,
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
assert.Contains(ctx.Version, "SNAPSHOT-")
|
assert.Contains(ctx.Version, "SNAPSHOT-")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +182,6 @@ func TestValidState(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNoValidate(t *testing.T) {
|
func TestNoValidate(t *testing.T) {
|
||||||
var assert = assert.New(t)
|
|
||||||
_, back := testlib.Mktmp(t)
|
_, back := testlib.Mktmp(t)
|
||||||
defer back()
|
defer back()
|
||||||
testlib.GitInit(t)
|
testlib.GitInit(t)
|
||||||
@ -194,7 +193,7 @@ func TestNoValidate(t *testing.T) {
|
|||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
Validate: false,
|
Validate: false,
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestChangelog(t *testing.T) {
|
func TestChangelog(t *testing.T) {
|
||||||
@ -210,7 +209,7 @@ func TestChangelog(t *testing.T) {
|
|||||||
var ctx = &context.Context{
|
var ctx = &context.Context{
|
||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
assert.Equal("v0.0.2", ctx.Git.CurrentTag)
|
assert.Equal("v0.0.2", ctx.Git.CurrentTag)
|
||||||
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
||||||
assert.NotContains(ctx.ReleaseNotes, "first")
|
assert.NotContains(ctx.ReleaseNotes, "first")
|
||||||
@ -236,7 +235,7 @@ func TestChangelogOfFirstRelease(t *testing.T) {
|
|||||||
var ctx = &context.Context{
|
var ctx = &context.Context{
|
||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
||||||
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
assert.Contains(ctx.ReleaseNotes, "## Changelog")
|
||||||
for _, msg := range msgs {
|
for _, msg := range msgs {
|
||||||
@ -255,7 +254,7 @@ func TestCustomReleaseNotes(t *testing.T) {
|
|||||||
Config: config.Project{},
|
Config: config.Project{},
|
||||||
ReleaseNotes: "custom",
|
ReleaseNotes: "custom",
|
||||||
}
|
}
|
||||||
assert.NoError(Pipe{}.Run(ctx))
|
testlib.AssertSkipped(t, Pipe{}.Run(ctx))
|
||||||
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
assert.Equal("v0.0.1", ctx.Git.CurrentTag)
|
||||||
assert.Equal(ctx.ReleaseNotes, "custom")
|
assert.Equal(ctx.ReleaseNotes, "custom")
|
||||||
}
|
}
|
||||||
|
@ -11,3 +11,18 @@ type Pipe interface {
|
|||||||
// Run the pipe
|
// Run the pipe
|
||||||
Run(ctx *context.Context) error
|
Run(ctx *context.Context) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ErrSkip occurs when a pipe is skipped for some reason
|
||||||
|
type ErrSkip struct {
|
||||||
|
reason string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error implements the error interface. returns the reason the pipe was skipped
|
||||||
|
func (e ErrSkip) Error() string {
|
||||||
|
return e.reason
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip skips this pipe with the given reason
|
||||||
|
func Skip(reason string) ErrSkip {
|
||||||
|
return ErrSkip{reason}
|
||||||
|
}
|
||||||
|
15
pipeline/pipe_test.go
Normal file
15
pipeline/pipe_test.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package pipeline
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSkipPipe(t *testing.T) {
|
||||||
|
var assert = assert.New(t)
|
||||||
|
var reason = "this is a test"
|
||||||
|
var err = Skip(reason)
|
||||||
|
assert.Error(err)
|
||||||
|
assert.Equal(reason, err.Error())
|
||||||
|
}
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
"github.com/goreleaser/goreleaser/internal/client"
|
"github.com/goreleaser/goreleaser/internal/client"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -27,8 +28,7 @@ func (Pipe) Run(ctx *context.Context) error {
|
|||||||
|
|
||||||
func doRun(ctx *context.Context, client client.Client) error {
|
func doRun(ctx *context.Context, client client.Client) error {
|
||||||
if !ctx.Publish {
|
if !ctx.Publish {
|
||||||
log.Warn("skipped because --skip-publish is set")
|
return pipeline.Skip("--skip-publish is set")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
log.WithField("tag", ctx.Git.CurrentTag).
|
log.WithField("tag", ctx.Git.CurrentTag).
|
||||||
WithField("repo", ctx.Config.Release.GitHub.String()).
|
WithField("repo", ctx.Config.Release.GitHub.String()).
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/internal/testlib"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -121,7 +122,7 @@ func TestSkipPublish(t *testing.T) {
|
|||||||
Parallelism: 1,
|
Parallelism: 1,
|
||||||
}
|
}
|
||||||
client := &DummyClient{}
|
client := &DummyClient{}
|
||||||
assert.NoError(doRun(ctx, client))
|
testlib.AssertSkipped(t, doRun(ctx, client))
|
||||||
assert.False(client.CreatedRelease)
|
assert.False(client.CreatedRelease)
|
||||||
assert.False(client.UploadedFile)
|
assert.False(client.UploadedFile)
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
@ -55,8 +56,7 @@ func (Pipe) Description() string {
|
|||||||
// Run the pipe
|
// Run the pipe
|
||||||
func (Pipe) Run(ctx *context.Context) error {
|
func (Pipe) Run(ctx *context.Context) error {
|
||||||
if ctx.Config.Snapcraft.Summary == "" && ctx.Config.Snapcraft.Description == "" {
|
if ctx.Config.Snapcraft.Summary == "" && ctx.Config.Snapcraft.Description == "" {
|
||||||
log.Warn("skipping because no summary nor description were provided")
|
return pipeline.Skip("no summary nor description were provided")
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
if ctx.Config.Snapcraft.Summary == "" {
|
if ctx.Config.Snapcraft.Summary == "" {
|
||||||
return ErrNoSummary
|
return ErrNoSummary
|
||||||
@ -100,6 +100,7 @@ func archFor(key string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func create(ctx *context.Context, folder, arch string, binaries []context.Binary) error {
|
func create(ctx *context.Context, folder, arch string, binaries []context.Binary) error {
|
||||||
|
var log = log.WithField("arch", arch)
|
||||||
// prime is the directory that then will be compressed to make the .snap package.
|
// prime is the directory that then will be compressed to make the .snap package.
|
||||||
folderDir := filepath.Join(ctx.Config.Dist, folder)
|
folderDir := filepath.Join(ctx.Config.Dist, folder)
|
||||||
primeDir := filepath.Join(folderDir, "prime")
|
primeDir := filepath.Join(folderDir, "prime")
|
||||||
@ -109,7 +110,7 @@ func create(ctx *context.Context, folder, arch string, binaries []context.Binary
|
|||||||
}
|
}
|
||||||
|
|
||||||
var file = filepath.Join(primeDir, "meta", "snap.yaml")
|
var file = filepath.Join(primeDir, "meta", "snap.yaml")
|
||||||
log.WithField("file", file).Info("creating snap metadata")
|
log.WithField("file", file).Debug("creating snap metadata")
|
||||||
|
|
||||||
var metadata = &SnapcraftMetadata{
|
var metadata = &SnapcraftMetadata{
|
||||||
Version: ctx.Version,
|
Version: ctx.Version,
|
||||||
@ -129,8 +130,10 @@ func create(ctx *context.Context, folder, arch string, binaries []context.Binary
|
|||||||
for _, binary := range binaries {
|
for _, binary := range binaries {
|
||||||
log.WithField("path", binary.Path).
|
log.WithField("path", binary.Path).
|
||||||
WithField("name", binary.Name).
|
WithField("name", binary.Name).
|
||||||
Info("passed binary to snapcraft")
|
Debug("passed binary to snapcraft")
|
||||||
appMetadata := AppMetadata{Command: binary.Name}
|
appMetadata := AppMetadata{
|
||||||
|
Command: binary.Name,
|
||||||
|
}
|
||||||
if configAppMetadata, ok := ctx.Config.Snapcraft.Apps[binary.Name]; ok {
|
if configAppMetadata, ok := ctx.Config.Snapcraft.Apps[binary.Name]; ok {
|
||||||
appMetadata.Plugs = configAppMetadata.Plugs
|
appMetadata.Plugs = configAppMetadata.Plugs
|
||||||
appMetadata.Daemon = configAppMetadata.Daemon
|
appMetadata.Daemon = configAppMetadata.Daemon
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"github.com/goreleaser/goreleaser/config"
|
"github.com/goreleaser/goreleaser/config"
|
||||||
"github.com/goreleaser/goreleaser/context"
|
"github.com/goreleaser/goreleaser/context"
|
||||||
|
"github.com/goreleaser/goreleaser/pipeline"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
@ -25,7 +26,7 @@ func TestRunPipeMissingInfo(t *testing.T) {
|
|||||||
ErrNoDescription: {
|
ErrNoDescription: {
|
||||||
Summary: "dummy summary",
|
Summary: "dummy summary",
|
||||||
},
|
},
|
||||||
nil: {}, // should skip instead of error
|
pipeline.Skip("no summary nor description were provided"): {},
|
||||||
} {
|
} {
|
||||||
t.Run(fmt.Sprintf("testing if %v happens", eerr), func(t *testing.T) {
|
t.Run(fmt.Sprintf("testing if %v happens", eerr), func(t *testing.T) {
|
||||||
var assert = assert.New(t)
|
var assert = assert.New(t)
|
||||||
@ -145,7 +146,14 @@ func TestNoSnapcraftInPath(t *testing.T) {
|
|||||||
|
|
||||||
func addBinaries(t *testing.T, ctx *context.Context, name, dist string) {
|
func addBinaries(t *testing.T, ctx *context.Context, name, dist string) {
|
||||||
var assert = assert.New(t)
|
var assert = assert.New(t)
|
||||||
for _, plat := range []string{"linuxamd64", "linux386", "darwinamd64", "linuxarm64", "linuxarmhf"} {
|
for _, plat := range []string{
|
||||||
|
"linuxamd64",
|
||||||
|
"linux386",
|
||||||
|
"darwinamd64",
|
||||||
|
"linuxarm64",
|
||||||
|
"linuxarm6",
|
||||||
|
"linuxwtf",
|
||||||
|
} {
|
||||||
var folder = name + "_" + plat
|
var folder = name + "_" + plat
|
||||||
assert.NoError(os.Mkdir(filepath.Join(dist, folder), 0755))
|
assert.NoError(os.Mkdir(filepath.Join(dist, folder), 0755))
|
||||||
var binPath = filepath.Join(dist, folder, name)
|
var binPath = filepath.Join(dist, folder, name)
|
||||||
|
Loading…
Reference in New Issue
Block a user