func AttachArtifact()

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
}