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 }