in pkg/oci.go [114:135]
func AttachArtifact(ctx context.Context, subject *v1.Descriptor, artifactDescriptor *v1.Descriptor, artifactType string, artifactBytes []byte, mem *memory.Store) error {
// Create a Reader for the bytes
artifactReader := bytes.NewReader(artifactBytes)
// Add descriptor to a memory store
err := mem.Push(ctx, *artifactDescriptor, artifactReader)
if err != nil {
return fmt.Errorf("error pushing artifact into memory store: %w", err)
}
// Pack the artifact manifest with the subject descriptor
_, err = oras.PackManifest(ctx, mem, oras.PackManifestVersion1_1, artifactType, oras.PackManifestOptions{
Subject: subject,
Layers: []v1.Descriptor{*artifactDescriptor},
})
if err != nil {
return fmt.Errorf("error packing artifact manifest: %w", err)
}
return nil
}