From 15730f43cdeac447f7991e9d071bf041ae7d493f Mon Sep 17 00:00:00 2001 From: Johannes Dillmann Date: Fri, 31 Jan 2025 13:10:12 +0100 Subject: [PATCH] Expose IndexManifest Signed-off-by: Johannes Dillmann --- cnb_index.go | 4 ++ fakes/image_index.go | 99 ++++++++++++++++++++++++++++++++++++++++++++ index.go | 1 + 3 files changed, 104 insertions(+) create mode 100644 fakes/image_index.go diff --git a/cnb_index.go b/cnb_index.go index 5045f2f7..92877a4a 100644 --- a/cnb_index.go +++ b/cnb_index.go @@ -123,6 +123,10 @@ func (h *CNBIndex) Annotations(digest name.Digest) (annotations map[string]strin return desc.Annotations, nil } +func (h *CNBIndex) IndexManifest() (*v1.IndexManifest, error) { + return getIndexManifest(h.ImageIndex) +} + // setters func (h *CNBIndex) SetAnnotations(digest name.Digest, annotations map[string]string) (err error) { diff --git a/fakes/image_index.go b/fakes/image_index.go new file mode 100644 index 00000000..a0abec08 --- /dev/null +++ b/fakes/image_index.go @@ -0,0 +1,99 @@ +package fakes + +import ( + "github.com/buildpacks/imgutil" + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" +) + +var _ imgutil.ImageIndex = ImageIndex{} + +type ImageIndex struct { + Manifests []v1.Descriptor +} + +// AddManifest implements imgutil.ImageIndex. +func (i ImageIndex) AddManifest(_ v1.Image) { + panic("unimplemented") +} + +// Annotations implements imgutil.ImageIndex. +func (i ImageIndex) Annotations(_ name.Digest) (map[string]string, error) { + panic("unimplemented") +} + +// Architecture implements imgutil.ImageIndex. +func (i ImageIndex) Architecture(_ name.Digest) (string, error) { + panic("unimplemented") +} + +// DeleteDir implements imgutil.ImageIndex. +func (i ImageIndex) DeleteDir() error { + panic("unimplemented") +} + +// Inspect implements imgutil.ImageIndex. +func (i ImageIndex) Inspect() (string, error) { + panic("unimplemented") +} + +// OS implements imgutil.ImageIndex. +func (i ImageIndex) OS(_ name.Digest) (string, error) { + panic("unimplemented") +} + +// OSFeatures implements imgutil.ImageIndex. +func (i ImageIndex) OSFeatures(_ name.Digest) ([]string, error) { + panic("unimplemented") +} + +// OSVersion implements imgutil.ImageIndex. +func (i ImageIndex) OSVersion(_ name.Digest) (string, error) { + panic("unimplemented") +} + +// Push implements imgutil.ImageIndex. +func (i ImageIndex) Push(_ ...imgutil.IndexOption) error { + panic("unimplemented") +} + +// RemoveManifest implements imgutil.ImageIndex. +func (i ImageIndex) RemoveManifest(_ name.Digest) error { + panic("unimplemented") +} + +// SaveDir implements imgutil.ImageIndex. +func (i ImageIndex) SaveDir() error { + panic("unimplemented") +} + +// SetAnnotations implements imgutil.ImageIndex. +func (i ImageIndex) SetAnnotations(_ name.Digest, _ map[string]string) error { + panic("unimplemented") +} + +// SetArchitecture implements imgutil.ImageIndex. +func (i ImageIndex) SetArchitecture(_ name.Digest, _ string) error { + panic("unimplemented") +} + +// SetOS implements imgutil.ImageIndex. +func (i ImageIndex) SetOS(_ name.Digest, _ string) error { + panic("unimplemented") +} + +// SetVariant implements imgutil.ImageIndex. +func (i ImageIndex) SetVariant(_ name.Digest, _ string) error { + panic("unimplemented") +} + +// Variant implements imgutil.ImageIndex. +func (i ImageIndex) Variant(_ name.Digest) (string, error) { + panic("unimplemented") +} + +func (i ImageIndex) IndexManifest() (*v1.IndexManifest, error) { + return &v1.IndexManifest{ + Manifests: i.Manifests, + }, nil +} diff --git a/index.go b/index.go index 532fc585..04910a7f 100644 --- a/index.go +++ b/index.go @@ -28,6 +28,7 @@ type ImageIndex interface { Inspect() (string, error) AddManifest(image v1.Image) RemoveManifest(digest name.Digest) error + IndexManifest() (*v1.IndexManifest, error) Push(ops ...IndexOption) error SaveDir() error