github.com/jonathanlloyd/goreleaser@v0.91.1/internal/pipe/defaults/defaults.go (about)

     1  // Package defaults implements the Pipe interface providing default values
     2  // for missing configuration.
     3  package defaults
     4  
     5  import (
     6  	"fmt"
     7  
     8  	"github.com/apex/log"
     9  	"github.com/goreleaser/goreleaser/internal/pipe/archive"
    10  	"github.com/goreleaser/goreleaser/internal/pipe/artifactory"
    11  	"github.com/goreleaser/goreleaser/internal/pipe/brew"
    12  	"github.com/goreleaser/goreleaser/internal/pipe/build"
    13  	"github.com/goreleaser/goreleaser/internal/pipe/checksums"
    14  	"github.com/goreleaser/goreleaser/internal/pipe/docker"
    15  	"github.com/goreleaser/goreleaser/internal/pipe/env"
    16  	"github.com/goreleaser/goreleaser/internal/pipe/nfpm"
    17  	"github.com/goreleaser/goreleaser/internal/pipe/project"
    18  	"github.com/goreleaser/goreleaser/internal/pipe/release"
    19  	"github.com/goreleaser/goreleaser/internal/pipe/s3"
    20  	"github.com/goreleaser/goreleaser/internal/pipe/scoop"
    21  	"github.com/goreleaser/goreleaser/internal/pipe/sign"
    22  	"github.com/goreleaser/goreleaser/internal/pipe/snapcraft"
    23  	"github.com/goreleaser/goreleaser/internal/pipe/snapshot"
    24  	"github.com/goreleaser/goreleaser/pkg/context"
    25  )
    26  
    27  // Pipe that sets the defaults
    28  type Pipe struct{}
    29  
    30  func (Pipe) String() string {
    31  	return "setting defaults"
    32  }
    33  
    34  // Defaulter can be implemented by a Piper to set default values for its
    35  // configuration.
    36  type Defaulter interface {
    37  	fmt.Stringer
    38  
    39  	// Default sets the configuration defaults
    40  	Default(ctx *context.Context) error
    41  }
    42  
    43  var defaulters = []Defaulter{
    44  	env.Pipe{},
    45  	snapshot.Pipe{},
    46  	release.Pipe{},
    47  	project.Pipe{},
    48  	archive.Pipe{},
    49  	build.Pipe{},
    50  	nfpm.Pipe{},
    51  	snapcraft.Pipe{},
    52  	checksums.Pipe{},
    53  	sign.Pipe{},
    54  	docker.Pipe{},
    55  	artifactory.Pipe{},
    56  	s3.Pipe{},
    57  	brew.Pipe{},
    58  	scoop.Pipe{},
    59  }
    60  
    61  // Run the pipe
    62  func (Pipe) Run(ctx *context.Context) error {
    63  	if ctx.Config.Dist == "" {
    64  		ctx.Config.Dist = "dist"
    65  	}
    66  	if ctx.Config.GitHubURLs.Download == "" {
    67  		ctx.Config.GitHubURLs.Download = "https://github.com"
    68  	}
    69  	for _, defaulter := range defaulters {
    70  		log.Debug(defaulter.String())
    71  		if err := defaulter.Default(ctx); err != nil {
    72  			return err
    73  		}
    74  	}
    75  	return nil
    76  }