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 }