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

     1  package dist
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/buildpack/imgutil"
     7  	"github.com/pkg/errors"
     8  
     9  	"github.com/buildpack/pack/style"
    10  )
    11  
    12  func SetLabel(image imgutil.Image, label string, data interface{}) error {
    13  	dataBytes, err := json.Marshal(data)
    14  	if err != nil {
    15  		return errors.Wrapf(err, "marshalling data to JSON for label %s", style.Symbol(label))
    16  	}
    17  	if err := image.SetLabel(label, string(dataBytes)); err != nil {
    18  		return errors.Wrapf(err, "setting label %s", style.Symbol(label))
    19  	}
    20  	return nil
    21  }
    22  
    23  func GetLabel(image imgutil.Image, label string, obj interface{}) (ok bool, err error) {
    24  	labelData, err := image.Label(label)
    25  	if err != nil {
    26  		return false, errors.Wrapf(err, "retrieving label %s", style.Symbol(label))
    27  	}
    28  	if labelData != "" {
    29  		if err := json.Unmarshal([]byte(labelData), obj); err != nil {
    30  			return false, errors.Wrapf(err, "unmarshalling label %s", style.Symbol(label))
    31  		}
    32  		return true, nil
    33  	}
    34  	return false, nil
    35  }