Skip to content

Commit f19ad05

Browse files
committed
refactor: use DeleteObjects to simplify code
1 parent 99927f4 commit f19ad05

File tree

3 files changed

+10
-31
lines changed

3 files changed

+10
-31
lines changed
-370 Bytes
Binary file not shown.
-15.3 KB
Binary file not shown.

pkg/sif/update.go

Lines changed: 10 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,10 @@ func Update(fi *sif.FileImage, ii v1.ImageIndex, opts ...UpdateOpt) error {
9494
}
9595

9696
// Delete existing blobs from the SIF except those we want to keep.
97-
if err := deleteBlobsExcept(fi, keepBlobs); err != nil {
98-
return err
99-
}
100-
// Delete old RootIndex.
101-
if err := deleteRootIndex(fi); err != nil {
97+
if err := fi.DeleteObjects(selectBlobsExcept(keepBlobs),
98+
sif.OptDeleteZero(true),
99+
sif.OptDeleteCompact(true),
100+
); err != nil {
102101
return err
103102
}
104103

@@ -309,33 +308,13 @@ func readCacheBlob(digest v1.Hash, cacheDir string) (io.ReadCloser, error) {
309308
return f, nil
310309
}
311310

312-
// deleteBlobsExcept removes all OCI.Blob descriptors from fi, except those with
311+
// selectBlobsExcept selects all OCI.RootIndex/OCI.Blob descriptors, except those with
313312
// digests listed in keep.
314-
func deleteBlobsExcept(fi *sif.FileImage, keep []v1.Hash) error {
315-
descs, err := fi.GetDescriptors(sif.WithDataType(sif.DataOCIBlob))
316-
if err != nil {
317-
return err
318-
}
319-
for _, d := range descs {
320-
dd, err := d.OCIBlobDigest()
321-
if err != nil {
322-
return err
323-
}
324-
if slices.Contains(keep, dd) {
325-
continue
313+
func selectBlobsExcept(keep []v1.Hash) sif.DescriptorSelectorFunc {
314+
return func(d sif.Descriptor) (bool, error) {
315+
if h, err := d.OCIBlobDigest(); err == nil && !slices.Contains(keep, h) {
316+
return true, nil
326317
}
327-
if err := fi.DeleteObject(d.ID(), sif.OptDeleteZero(true)); err != nil {
328-
return err
329-
}
330-
}
331-
return nil
332-
}
333-
334-
// deleteRootIndex removes the RootIndex from a the SIF fi.
335-
func deleteRootIndex(fi *sif.FileImage) error {
336-
desc, err := fi.GetDescriptor(sif.WithDataType(sif.DataOCIRootIndex))
337-
if err != nil {
338-
return err
318+
return false, nil
339319
}
340-
return fi.DeleteObject(desc.ID())
341320
}

0 commit comments

Comments
 (0)