github.com/ahmet2mir/goreleaser@v0.180.3-0.20210927151101-8e5ee5a9b8c5/internal/middleware/skip/skip.go (about) 1 // Package skip can skip an entire Action. 2 package skip 3 4 import ( 5 "fmt" 6 7 "github.com/apex/log" 8 "github.com/goreleaser/goreleaser/internal/middleware" 9 "github.com/goreleaser/goreleaser/pkg/context" 10 ) 11 12 // Skipper defines a method to skip an entire Piper. 13 type Skipper interface { 14 // Skip returns true if the Piper should be skipped. 15 Skip(ctx *context.Context) bool 16 17 fmt.Stringer 18 } 19 20 // Maybe returns an action that skips immediately if the given p is a Skipper 21 // and its Skip method returns true. 22 func Maybe(skipper interface{}, next middleware.Action) middleware.Action { 23 if skipper, ok := skipper.(Skipper); ok { 24 return func(ctx *context.Context) error { 25 if skipper.Skip(ctx) { 26 log.Debugf("skipped %s", skipper.String()) 27 return nil 28 } 29 return next(ctx) 30 } 31 } 32 return next 33 }