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  }