func PullBytes()

in pkg/registry/pull.go [12:36]


func PullBytes(ctx context.Context, sc StorageClient, artifact Artifact) (data []byte, err error) {
	srcStorage, err := sc.GetStorage(ctx, artifact)
	if err != nil {
		return nil, fmt.Errorf("repository source: %v", err)
	}

	_, data, err = sc.FetchBytes(ctx, srcStorage, artifact)
	if err != nil {
		return nil, fmt.Errorf("fetch manifest: %v", err)
	}

	var mani ocispec.Manifest
	if err := json.Unmarshal(data, &mani); err != nil {
		return nil, fmt.Errorf("unmarshal manifest: %v", err)
	}
	if len(mani.Layers) < 1 {
		return nil, fmt.Errorf("missing layer")
	}

	data, err = sc.FetchBlob(ctx, srcStorage, mani.Layers[0])
	if err != nil {
		return nil, fmt.Errorf("fetch blob: %v", err)
	}
	return data, err
}