func (s *ostreeImageSource) LayerInfosForCopy(ctx context.Context) ([]types.BlobInfo, error) {
	updatedBlobInfos := []types.BlobInfo{}
	manifestBlob, manifestType, err := s.GetManifest(ctx, nil)
	if err != nil {
		return nil, err
	}

	man, err := manifest.FromBlob(manifestBlob, manifestType)

	s.compressed = make(map[digest.Digest]digest.Digest)

	layerBlobs := man.LayerInfos()

	for _, layerBlob := range layerBlobs {
		branch := fmt.Sprintf("ociimage/%s", layerBlob.Digest.Hex())
		found, uncompressedDigestStr, err := readMetadata(s.repo, branch, "docker.uncompressed_digest")
		if err != nil || !found {
			return nil, err
		}

		found, uncompressedSizeStr, err := readMetadata(s.repo, branch, "docker.uncompressed_size")
		if err != nil || !found {
			return nil, err
		}

		uncompressedSize, err := strconv.ParseInt(uncompressedSizeStr, 10, 64)
		if err != nil {
			return nil, err
		}
		uncompressedDigest := digest.Digest(uncompressedDigestStr)
		blobInfo := types.BlobInfo{
			Digest:    uncompressedDigest,
			Size:      uncompressedSize,
			MediaType: layerBlob.MediaType,
		}
		s.compressed[uncompressedDigest] = layerBlob.Digest
		updatedBlobInfos = append(updatedBlobInfos, blobInfo)
	}
	return updatedBlobInfos, nil
}
func (s *ostreeImageSource) LayerInfosForCopy(ctx context.Context) ([]types.BlobInfo, error) {
	updatedBlobInfos := []types.BlobInfo{}
	manifestBlob, manifestType, err := s.GetManifest(ctx, nil)
	if err != nil {
		return nil, err
	}

	man, err := manifest.FromBlob(manifestBlob, manifestType)

	s.compressed = make(map[digest.Digest]digest.Digest)

	layerBlobs := man.LayerInfos()

	for _, layerBlob := range layerBlobs {
		branch := fmt.Sprintf("ociimage/%s", layerBlob.Digest.Hex())
		found, uncompressedDigestStr, err := readMetadata(s.repo, branch, "docker.uncompressed_digest")
		if err != nil || !found {
			return nil, err
		}

		found, uncompressedSizeStr, err := readMetadata(s.repo, branch, "docker.uncompressed_size")
		if err != nil || !found {
			return nil, err
		}

		uncompressedSize, err := strconv.ParseInt(uncompressedSizeStr, 10, 64)
		if err != nil {
			return nil, err
		}
		uncompressedDigest := digest.Digest(uncompressedDigestStr)
		blobInfo := types.BlobInfo{
			Digest:    uncompressedDigest,
			Size:      uncompressedSize,
			MediaType: layerBlob.MediaType,
		}
		s.compressed[uncompressedDigest] = layerBlob.Digest
		updatedBlobInfos = append(updatedBlobInfos, blobInfo)
	}
	return updatedBlobInfos, nil
}
func ( s * ostreeImageSource ) LayerInfosForCopy ( ctx context . Context ) ( [ ] types . BlobInfo , error ) { updatedBlobInfos := [ ] types . BlobInfo { } manifestBlob , manifestType , err := s . GetManifest ( ctx , nil ) if err != nil { return nil , err } man , err := manifest . FromBlob ( manifestBlob , manifestType ) s . compressed = make ( map [ digest . Digest ] digest . Digest ) layerBlobs := man . LayerInfos ( ) for _ , layerBlob := range layerBlobs { branch := fmt . Sprintf ( " " , layerBlob . Digest . Hex ( ) ) found , uncompressedDigestStr , err := readMetadata ( s . repo , branch , " " ) if err != nil || ! found { return nil , err } found , uncompressedSizeStr , err := readMetadata ( s . repo , branch , " " ) if err != nil || ! found { return nil , err } uncompressedSize , err := strconv . ParseInt ( uncompressedSizeStr , 10 , 64 ) if err != nil { return nil , err } uncompressedDigest := digest . Digest ( uncompressedDigestStr ) blobInfo := types . BlobInfo { Digest : uncompressedDigest , Size : uncompressedSize , MediaType : layerBlob . MediaType , } s . compressed [ uncompressedDigest ] = layerBlob . Digest updatedBlobInfos = append ( updatedBlobInfos , blobInfo ) } return updatedBlobInfos , nil }
// LayerInfosForCopy() returns the list of layer blobs that make up the root filesystem of
// the image, after they've been decompressed.
LayerInfosForCopy () returns the list of layer blobs that make up the root filesystem of the image after they ve been decompressed .