github.com/ahmet2mir/goreleaser@v0.180.3-0.20210927151101-8e5ee5a9b8c5/internal/pipe/docker/api_buildpack.go (about) 1 package docker 2 3 import ( 4 "context" 5 "fmt" 6 "strings" 7 ) 8 9 type buildPackImager struct{} 10 11 func (i buildPackImager) Push(ctx context.Context, image string, flags []string) error { 12 return dockerImager{}.Push(ctx, image, flags) 13 } 14 15 func (i buildPackImager) Build(ctx context.Context, root string, images, flags []string) error { 16 if err := runCommand(ctx, "", "pack", i.buildCommand(images, flags)...); err != nil { 17 return fmt.Errorf("failed to build %s: %w", images[0], err) 18 } 19 return nil 20 } 21 22 func (i buildPackImager) buildCommand(images, flags []string) []string { 23 base := []string{"build", images[0]} 24 for j := 1; j < len(images); j++ { 25 base = append(base, "-t", images[j]) 26 } 27 28 builderConfigured := false 29 for _, flag := range flags { 30 if strings.HasPrefix(flag, "-B") || strings.HasPrefix(flag, "--builder") { 31 builderConfigured = true 32 } 33 } 34 35 if !builderConfigured { 36 flags = append(flags, "--builder=gcr.io/buildpacks/builder:v1") 37 } 38 39 return append(base, flags...) 40 }