INNER CODE UNIT · Go

unpackOCI

container2wasm/container2wasm · cmd/create-spec/main.go:106

func unpackOCI(ctx context.Context, imgDir string, platformMC platforms.MatchComparer, rootfs string, descs []ocispec.Descriptor) (io.Reader, error) {
	var children []ocispec.Descriptor
	for _, desc := range descs {
		switch desc.MediaType {
		case ocispec.MediaTypeImageManifest, images.MediaTypeDockerSchema2Manifest:
			if desc.Platform != nil && platformMC != nil && !platformMC.Match(*desc.Platform) {
				continue
			}
			mfstD, err := os.ReadFile(filepath.Join(imgDir, "/blobs/sha256", desc.Digest.Encoded()))
			if err != nil {
				return nil, err
			}
			var manifest ocispec.Manifest
			if err := json.Unmarshal(mfstD, &manifest); err != nil {
				return nil, err
			}
			if !isContainerManifest(manifest) {
				fmt.Printf("%v is not a container manifest. skipping...", desc.Digest.String())

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…