func (m *manifestSchema1) UpdatedImage(ctx context.Context, options types.ManifestUpdateOptions) (types.Image, error) {
	copy := manifestSchema1{m: manifest.Schema1Clone(m.m)}
	if options.LayerInfos != nil {
		if err := copy.m.UpdateLayerInfos(options.LayerInfos); err != nil {
			return nil, err
		}
	}
	if options.EmbeddedDockerReference != nil {
		copy.m.Name = reference.Path(options.EmbeddedDockerReference)
		if tagged, isTagged := options.EmbeddedDockerReference.(reference.NamedTagged); isTagged {
			copy.m.Tag = tagged.Tag()
		} else {
			copy.m.Tag = ""
		}
	}

	switch options.ManifestMIMEType {
	case "": // No conversion, OK
	case manifest.DockerV2Schema1MediaType, manifest.DockerV2Schema1SignedMediaType:
	// We have 2 MIME types for schema 1, which are basically equivalent (even the un-"Signed" MIME type will be rejected if there isn’t a signature; so,
	// handle conversions between them by doing nothing.
	case manifest.DockerV2Schema2MediaType:
		m2, err := copy.convertToManifestSchema2(options.InformationOnly.LayerInfos, options.InformationOnly.LayerDiffIDs)
		if err != nil {
			return nil, err
		}
		return memoryImageFromManifest(m2), nil
	case imgspecv1.MediaTypeImageManifest:
		// We can't directly convert to OCI, but we can transitively convert via a Docker V2.2 Distribution manifest
		m2, err := copy.convertToManifestSchema2(options.InformationOnly.LayerInfos, options.InformationOnly.LayerDiffIDs)
		if err != nil {
			return nil, err
		}
		return m2.UpdatedImage(ctx, types.ManifestUpdateOptions{
			ManifestMIMEType: imgspecv1.MediaTypeImageManifest,
			InformationOnly:  options.InformationOnly,
		})
	default:
		return nil, errors.Errorf("Conversion of image manifest from %s to %s is not implemented", manifest.DockerV2Schema1SignedMediaType, options.ManifestMIMEType)
	}

	return memoryImageFromManifest(&copy), nil
}
func (m *manifestSchema1) UpdatedImage(ctx context.Context, options types.ManifestUpdateOptions) (types.Image, error) {
	copy := manifestSchema1{m: manifest.Schema1Clone(m.m)}
	if options.LayerInfos != nil {
		if err := copy.m.UpdateLayerInfos(options.LayerInfos); err != nil {
			return nil, err
		}
	}
	if options.EmbeddedDockerReference != nil {
		copy.m.Name = reference.Path(options.EmbeddedDockerReference)
		if tagged, isTagged := options.EmbeddedDockerReference.(reference.NamedTagged); isTagged {
			copy.m.Tag = tagged.Tag()
		} else {
			copy.m.Tag = ""
		}
	}

	switch options.ManifestMIMEType {
	case "": 
	case manifest.DockerV2Schema1MediaType, manifest.DockerV2Schema1SignedMediaType:
	
	
	case manifest.DockerV2Schema2MediaType:
		m2, err := copy.convertToManifestSchema2(options.InformationOnly.LayerInfos, options.InformationOnly.LayerDiffIDs)
		if err != nil {
			return nil, err
		}
		return memoryImageFromManifest(m2), nil
	case imgspecv1.MediaTypeImageManifest:
		
		m2, err := copy.convertToManifestSchema2(options.InformationOnly.LayerInfos, options.InformationOnly.LayerDiffIDs)
		if err != nil {
			return nil, err
		}
		return m2.UpdatedImage(ctx, types.ManifestUpdateOptions{
			ManifestMIMEType: imgspecv1.MediaTypeImageManifest,
			InformationOnly:  options.InformationOnly,
		})
	default:
		return nil, errors.Errorf("Conversion of image manifest from %s to %s is not implemented", manifest.DockerV2Schema1SignedMediaType, options.ManifestMIMEType)
	}

	return memoryImageFromManifest(&copy), nil
}
func ( m * manifestSchema1 ) UpdatedImage ( ctx context . Context , options types . ManifestUpdateOptions ) ( types . Image , error ) { copy := manifestSchema1 { m : manifest . Schema1Clone ( m . m ) } if options . LayerInfos != nil { if err := copy . m . UpdateLayerInfos ( options . LayerInfos ) ; err != nil { return nil , err } } if options . EmbeddedDockerReference != nil { copy . m . Name = reference . Path ( options . EmbeddedDockerReference ) if tagged , isTagged := options . EmbeddedDockerReference . ( reference . NamedTagged ) ; isTagged { copy . m . Tag = tagged . Tag ( ) } else { copy . m . Tag = " " } } switch options . ManifestMIMEType { case " " : // No conversion, OK case manifest . DockerV2Schema1MediaType , manifest . DockerV2Schema1SignedMediaType : // We have 2 MIME types for schema 1, which are basically equivalent (even the un-"Signed" MIME type will be rejected if there isn’t a signature; so, // handle conversions between them by doing nothing. case manifest . DockerV2Schema2MediaType : m2 , err := copy . convertToManifestSchema2 ( options . InformationOnly . LayerInfos , options . InformationOnly . LayerDiffIDs ) if err != nil { return nil , err } return memoryImageFromManifest ( m2 ) , nil case imgspecv1 . MediaTypeImageManifest : // We can't directly convert to OCI, but we can transitively convert via a Docker V2.2 Distribution manifest m2 , err := copy . convertToManifestSchema2 ( options . InformationOnly . LayerInfos , options . InformationOnly . LayerDiffIDs ) if err != nil { return nil , err } return m2 . UpdatedImage ( ctx , types . ManifestUpdateOptions { ManifestMIMEType : imgspecv1 . MediaTypeImageManifest , InformationOnly : options . InformationOnly , } ) default : return nil , errors . Errorf ( " " , manifest . DockerV2Schema1SignedMediaType , options . ManifestMIMEType ) } return memoryImageFromManifest ( & copy ) , nil }
// UpdatedImage returns a types.Image modified according to options.
// This does not change the state of the original Image object.
UpdatedImage returns a types . Image modified according to options . This does not change the state of the original Image object .