pkg/artifact.go (24 lines of code) (raw):
package obom
import (
"fmt"
"io"
"os"
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"oras.land/oras-go/v2/content"
)
func LoadArtifactFromFile(filename string, mediaType string) (*ocispec.Descriptor, []byte, error) {
file, err := os.Open(filename)
if err != nil {
return nil, nil, fmt.Errorf("error loading artifact from file: %w", err)
}
return LoadArtifactFromReader(file, mediaType)
}
func LoadArtifactFromReader(reader io.ReadCloser, mediaType string) (*ocispec.Descriptor, []byte, error) {
defer reader.Close()
// Read all the bytes from the reader into a slice
artifactBytes, err := io.ReadAll(reader)
if err != nil {
return nil, nil, err
}
desc := content.NewDescriptorFromBytes(mediaType, artifactBytes)
return &desc, artifactBytes, nil
}