github.com/ahmet2mir/goreleaser@v0.180.3-0.20210927151101-8e5ee5a9b8c5/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/middleware/logging" 12 "github.com/goreleaser/goreleaser/internal/tmpl" 13 "github.com/goreleaser/goreleaser/pkg/context" 14 "github.com/goreleaser/goreleaser/pkg/defaults" 15 ) 16 17 // Pipe that sets the defaults. 18 type Pipe struct{} 19 20 func (Pipe) String() string { return "setting defaults" } 21 22 // Run the pipe. 23 func (Pipe) Run(ctx *context.Context) error { 24 if ctx.Config.Dist == "" { 25 ctx.Config.Dist = "dist" 26 } 27 if ctx.Config.GitHubURLs.Download == "" { 28 ctx.Config.GitHubURLs.Download = client.DefaultGitHubDownloadURL 29 } 30 if ctx.Config.GitLabURLs.Download == "" { 31 ctx.Config.GitLabURLs.Download = client.DefaultGitLabDownloadURL 32 } 33 if ctx.Config.GiteaURLs.Download == "" { 34 apiURL, err := tmpl.New(ctx).Apply(ctx.Config.GiteaURLs.API) 35 if err != nil { 36 return fmt.Errorf("templating Gitea API URL: %w", err) 37 } 38 39 ctx.Config.GiteaURLs.Download = strings.ReplaceAll(apiURL, "/api/v1", "") 40 } 41 for _, defaulter := range defaults.Defaulters { 42 if err := logging.Log( 43 defaulter.String(), 44 errhandler.Handle(defaulter.Default), 45 logging.ExtraPadding, 46 )(ctx); err != nil { 47 return err 48 } 49 } 50 return nil 51 }