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  }