github.com/amane3/goreleaser@v0.182.0/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  	"strings"
     7  
     8  	"github.com/amane3/goreleaser/internal/client"
     9  	"github.com/amane3/goreleaser/internal/middleware"
    10  	"github.com/amane3/goreleaser/pkg/context"
    11  	"github.com/amane3/goreleaser/pkg/defaults"
    12  )
    13  
    14  // Pipe that sets the defaults.
    15  type Pipe struct{}
    16  
    17  func (Pipe) String() string {
    18  	return "setting defaults"
    19  }
    20  
    21  // Run the pipe.
    22  func (Pipe) Run(ctx *context.Context) error {
    23  	if ctx.Config.Dist == "" {
    24  		ctx.Config.Dist = "dist"
    25  	}
    26  	if ctx.Config.GitHubURLs.Download == "" {
    27  		ctx.Config.GitHubURLs.Download = client.DefaultGitHubDownloadURL
    28  	}
    29  	if ctx.Config.GitLabURLs.Download == "" {
    30  		ctx.Config.GitLabURLs.Download = client.DefaultGitLabDownloadURL
    31  	}
    32  	if ctx.Config.GiteaURLs.Download == "" {
    33  		ctx.Config.GiteaURLs.Download = strings.ReplaceAll(ctx.Config.GiteaURLs.API, "/api/v1", "")
    34  	}
    35  	for _, defaulter := range defaults.Defaulters {
    36  		if err := middleware.Logging(
    37  			defaulter.String(),
    38  			middleware.ErrHandler(defaulter.Default),
    39  			middleware.ExtraPadding,
    40  		)(ctx); err != nil {
    41  			return err
    42  		}
    43  	}
    44  	return nil
    45  }