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 }