// Package build provides the API for external builders package build import ( "sync" "github.com/goreleaser/goreleaser/pkg/config" "github.com/goreleaser/goreleaser/pkg/context" ) // nolint: gochecknoglobals var ( builders = map[string]Builder{} lock sync.Mutex ) // Register registers a builder to a given name. func Register(name string, builder Builder) { lock.Lock() builders[name] = builder lock.Unlock() } // For gets the previously registered builder for the given name. func For(name string) Builder { return builders[name] } // Options to be passed down to a builder. type Options struct { Name string Path string Ext string Target string Goos string Goarch string Goamd64 string Goarm string Gomips string } // Builder defines a builder. type Builder interface { WithDefaults(build config.Build) (config.Build, error) Build(ctx *context.Context, build config.Build, options Options) error }