github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/client/manifest_rm.go (about) 1 package client 2 3 import ( 4 "errors" 5 "fmt" 6 7 gccrName "github.com/google/go-containerregistry/pkg/name" 8 ) 9 10 // RemoveManifest implements commands.PackClient. 11 func (c *Client) RemoveManifest(name string, images []string) error { 12 var allErrors error 13 14 imgIndex, err := c.indexFactory.LoadIndex(name) 15 if err != nil { 16 return err 17 } 18 19 for _, image := range images { 20 ref, err := gccrName.NewDigest(image, gccrName.WeakValidation, gccrName.Insecure) 21 if err != nil { 22 allErrors = errors.Join(allErrors, fmt.Errorf("invalid instance '%s': %w", image, err)) 23 } 24 25 if err = imgIndex.RemoveManifest(ref); err != nil { 26 allErrors = errors.Join(allErrors, err) 27 } 28 29 if err = imgIndex.SaveDir(); err != nil { 30 allErrors = errors.Join(allErrors, err) 31 } 32 } 33 34 if allErrors == nil { 35 c.logger.Infof("Successfully removed image(s) from index: '%s'", name) 36 } 37 38 return allErrors 39 }