github.com/buildpack/pack@v0.5.0/inspect_builder.go (about)

     1  package pack
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/pkg/errors"
     7  
     8  	"github.com/buildpack/pack/builder"
     9  	"github.com/buildpack/pack/dist"
    10  	"github.com/buildpack/pack/image"
    11  	"github.com/buildpack/pack/style"
    12  )
    13  
    14  type BuilderInfo struct {
    15  	Description     string
    16  	Stack           string
    17  	RunImage        string
    18  	RunImageMirrors []string
    19  	Buildpacks      []builder.BuildpackMetadata
    20  	Order           dist.Order
    21  	Lifecycle       builder.LifecycleDescriptor
    22  	CreatedBy       builder.CreatorMetadata
    23  }
    24  
    25  type BuildpackInfo struct {
    26  	ID      string
    27  	Version string
    28  }
    29  
    30  func (c *Client) InspectBuilder(name string, daemon bool) (*BuilderInfo, error) {
    31  	img, err := c.imageFetcher.Fetch(context.Background(), name, daemon, false)
    32  	if err != nil {
    33  		if errors.Cause(err) == image.ErrNotFound {
    34  			return nil, nil
    35  		}
    36  		return nil, err
    37  	}
    38  
    39  	bldr, err := builder.GetBuilder(img)
    40  	if err != nil {
    41  		return nil, errors.Wrapf(err, "invalid builder %s", style.Symbol(name))
    42  	}
    43  
    44  	return &BuilderInfo{
    45  		Description:     bldr.Description(),
    46  		Stack:           bldr.StackID,
    47  		RunImage:        bldr.GetStackInfo().RunImage.Image,
    48  		RunImageMirrors: bldr.GetStackInfo().RunImage.Mirrors,
    49  		Buildpacks:      bldr.GetBuildpacks(),
    50  		Order:           bldr.GetOrder(),
    51  		Lifecycle:       bldr.GetLifecycleDescriptor(),
    52  		CreatedBy:       bldr.GetCreatedBy(),
    53  	}, nil
    54  }