github.com/goreleaser/goreleaser@v1.25.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  	"strings"
     8  
     9  	"github.com/goreleaser/goreleaser/internal/client"
    10  	"github.com/goreleaser/goreleaser/internal/middleware/errhandler"
    11  	"github.com/goreleaser/goreleaser/internal/tmpl"
    12  	"github.com/goreleaser/goreleaser/pkg/context"
    13  	"github.com/goreleaser/goreleaser/pkg/defaults"
    14  )
    15  
    16  // Pipe that sets the defaults.
    17  type Pipe struct{}
    18  
    19  func (Pipe) String() string { return "setting defaults" }
    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  		apiURL, err := tmpl.New(ctx).Apply(ctx.Config.GiteaURLs.API)
    34  		if err != nil {
    35  			return fmt.Errorf("templating Gitea API URL: %w", err)
    36  		}
    37  
    38  		ctx.Config.GiteaURLs.Download = strings.TrimSuffix(strings.ReplaceAll(apiURL, "/api/v1", ""), "/")
    39  	}
    40  	for _, defaulter := range defaults.Defaulters {
    41  		if err := errhandler.Handle(defaulter.Default)(ctx); err != nil {
    42  			return err
    43  		}
    44  	}
    45  	return nil
    46  }