package pallet import ( "fmt" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/empty" gmutate "github.com/google/go-containerregistry/pkg/v1/mutate" "github.com/google/go-containerregistry/pkg/v1/types" "edge-infra.dev/pkg/f8n/warehouse/oci" "edge-infra.dev/pkg/f8n/warehouse/oci/mutate" ) // ImageIndex creates a new Pallet that is an OCI v1.ImageIndex func ImageIndex(o Options, artifacts ...oci.Artifact) (Pallet, error) { if len(artifacts) == 0 { return nil, fmt.Errorf("pallet.ImageIndex: no artifacts provided") } p, err := fromOpts(o) if err != nil { return nil, err } idx, err := mutate.AppendManifests(empty.Index, artifacts...) if err != nil { return nil, fmt.Errorf("pallet.ImageIndex: %w", err) } p.Artifact = gmutate.IndexMediaType( oci.Annotate(idx, o.annos()...).(v1.ImageIndex), types.OCIImageIndex, ).(oci.Artifact) return p, nil }