diff --git a/go.mod b/go.mod index fcdefd7f4..f112fd04d 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,7 @@ require ( github.com/Masterminds/semver/v3 v3.0.3 github.com/apex/log v1.1.1 github.com/aws/aws-sdk-go v1.25.11 + github.com/caarlos0/cmdstream v0.1.0 github.com/caarlos0/ctrlc v1.0.0 github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e github.com/fatih/color v1.7.0 diff --git a/go.sum b/go.sum index 8b8413218..6496adbcd 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,8 @@ github.com/aws/aws-sdk-go v1.25.11/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= +github.com/caarlos0/cmdstream v0.1.0 h1:Y9EOUEp0e7Lh09vaVXq0psc6gqUYXnLzfD+WAciRW50= +github.com/caarlos0/cmdstream v0.1.0/go.mod h1:JV0/yP9NA7jR+rYk7gDk0K43FxcxaduXpGhYEe8olNc= github.com/caarlos0/ctrlc v1.0.0 h1:2DtF8GSIcajgffDFJzyG15vO+1PuBWOMUdFut7NnXhw= github.com/caarlos0/ctrlc v1.0.0/go.mod h1:CdXpj4rmq0q/1Eb44M9zi2nKB0QraNKuRGYGrrHhcQw= github.com/campoy/unique v0.0.0-20180121183637-88950e537e7e h1:V9a67dfYqPLAvzk5hMQOXYJlZ4SLIXgyKIE+ZiHzgGQ= diff --git a/internal/logext/writer.go b/internal/logext/writer.go new file mode 100644 index 000000000..935e8fc62 --- /dev/null +++ b/internal/logext/writer.go @@ -0,0 +1,18 @@ +package logext + +import "github.com/apex/log" + +// Writer writes with log.Info +type Writer struct { + ctx *log.Entry +} + +// NewWriter creates a new log writer +func NewWriter(ctx *log.Entry) Writer { + return Writer{ctx: ctx} +} + +func (t Writer) Write(p []byte) (n int, err error) { + t.ctx.Info(string(p)) + return len(p), nil +} diff --git a/internal/logext/writer_test.go b/internal/logext/writer_test.go new file mode 100644 index 000000000..d76a63523 --- /dev/null +++ b/internal/logext/writer_test.go @@ -0,0 +1,14 @@ +package logext + +import ( + "testing" + + "github.com/apex/log" + "github.com/stretchr/testify/require" +) + +func TestWriter(t *testing.T) { + l, err := NewWriter(log.WithField("foo", "bar")).Write([]byte("foo bar")) + require.NoError(t, err) + require.Equal(t, 7, l) +} diff --git a/internal/pipe/sign/sign.go b/internal/pipe/sign/sign.go index ce00ede70..d948a597a 100644 --- a/internal/pipe/sign/sign.go +++ b/internal/pipe/sign/sign.go @@ -8,8 +8,11 @@ import ( "reflect" "github.com/apex/log" + "github.com/caarlos0/cmdstream" + "github.com/goreleaser/goreleaser/internal/artifact" "github.com/goreleaser/goreleaser/internal/deprecate" + "github.com/goreleaser/goreleaser/internal/logext" "github.com/goreleaser/goreleaser/internal/pipe" "github.com/goreleaser/goreleaser/internal/semerrgroup" "github.com/goreleaser/goreleaser/pkg/config" @@ -114,10 +117,11 @@ func signone(ctx *context.Context, cfg config.Sign, a *artifact.Artifact) (*arti // tells the scanner to ignore this. // #nosec cmd := exec.CommandContext(ctx, cfg.Cmd, args...) - log.WithField("cmd", cmd.Args).Debug("running") - output, err := cmd.CombinedOutput() - if err != nil { - return nil, fmt.Errorf("sign: %s failed with %q", cfg.Cmd, string(output)) + log.WithField("cmd", cmd.Args).Info("signing") + if err := cmdstream.Stream( + cmd, logext.NewWriter(log.WithField("cmd", cfg.Cmd)), + ); err != nil { + return nil, fmt.Errorf("sign: %s failed", cfg.Cmd) } artifactPathBase, _ := filepath.Split(a.Path)