mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	imagetools: simplify return type of annotation parser
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
		@@ -147,17 +147,15 @@ func (r *Resolver) Combine(ctx context.Context, srcs []*Source, ann map[string]s
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, ocispec.Descriptor{}, err
 | 
			
		||||
		}
 | 
			
		||||
		if len(annotations[exptypes.AnnotationIndex]) > 0 {
 | 
			
		||||
			for k, v := range annotations[exptypes.AnnotationIndex] {
 | 
			
		||||
		for k, v := range annotations {
 | 
			
		||||
			switch k.Type {
 | 
			
		||||
			case exptypes.AnnotationIndex:
 | 
			
		||||
				indexAnnotation[k.Key] = v
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if len(annotations[exptypes.AnnotationManifestDescriptor]) > 0 {
 | 
			
		||||
			for i := 0; i < len(newDescs); i++ {
 | 
			
		||||
				if newDescs[i].Annotations == nil {
 | 
			
		||||
					newDescs[i].Annotations = map[string]string{}
 | 
			
		||||
				}
 | 
			
		||||
				for k, v := range annotations[exptypes.AnnotationManifestDescriptor] {
 | 
			
		||||
			case exptypes.AnnotationManifestDescriptor:
 | 
			
		||||
				for i := 0; i < len(newDescs); i++ {
 | 
			
		||||
					if newDescs[i].Annotations == nil {
 | 
			
		||||
						newDescs[i].Annotations = map[string]string{}
 | 
			
		||||
					}
 | 
			
		||||
					if k.Platform == nil || k.PlatformString() == platforms.Format(*newDescs[i].Platform) {
 | 
			
		||||
						newDescs[i].Annotations[k.Key] = v
 | 
			
		||||
					}
 | 
			
		||||
@@ -296,11 +294,10 @@ func detectMediaType(dt []byte) (string, error) {
 | 
			
		||||
	return images.MediaTypeDockerSchema2ManifestList, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseAnnotations(ann map[string]string) (map[string]map[exptypes.AnnotationKey]string, error) {
 | 
			
		||||
func parseAnnotations(ann map[string]string) (map[exptypes.AnnotationKey]string, error) {
 | 
			
		||||
	// TODO: use buildkit's annotation parser once it supports setting custom prefix and ":" separator
 | 
			
		||||
	annotationRegexp := regexp.MustCompile(`^([a-z-]+)(?:\[([A-Za-z0-9_/-]+)\])?:(\S+)$`)
 | 
			
		||||
	indexAnnotations := make(map[exptypes.AnnotationKey]string)
 | 
			
		||||
	manifestDescriptorAnnotations := make(map[exptypes.AnnotationKey]string)
 | 
			
		||||
	annotations := make(map[exptypes.AnnotationKey]string)
 | 
			
		||||
	for k, v := range ann {
 | 
			
		||||
		groups := annotationRegexp.FindStringSubmatch(k)
 | 
			
		||||
		if groups == nil {
 | 
			
		||||
@@ -323,14 +320,14 @@ func parseAnnotations(ann map[string]string) (map[string]map[exptypes.Annotation
 | 
			
		||||
				Platform: ociPlatform,
 | 
			
		||||
				Key:      key,
 | 
			
		||||
			}
 | 
			
		||||
			indexAnnotations[ak] = v
 | 
			
		||||
			annotations[ak] = v
 | 
			
		||||
		case exptypes.AnnotationManifestDescriptor:
 | 
			
		||||
			ak := exptypes.AnnotationKey{
 | 
			
		||||
				Type:     typ,
 | 
			
		||||
				Platform: ociPlatform,
 | 
			
		||||
				Key:      key,
 | 
			
		||||
			}
 | 
			
		||||
			manifestDescriptorAnnotations[ak] = v
 | 
			
		||||
			annotations[ak] = v
 | 
			
		||||
		case exptypes.AnnotationManifest:
 | 
			
		||||
			return nil, errors.Errorf("%q annotations are not supported yet", typ)
 | 
			
		||||
		case exptypes.AnnotationIndexDescriptor:
 | 
			
		||||
@@ -339,8 +336,5 @@ func parseAnnotations(ann map[string]string) (map[string]map[exptypes.Annotation
 | 
			
		||||
			return nil, errors.Errorf("unknown annotation type %q", typ)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return map[string]map[exptypes.AnnotationKey]string{
 | 
			
		||||
		exptypes.AnnotationIndex:              indexAnnotations,
 | 
			
		||||
		exptypes.AnnotationManifestDescriptor: manifestDescriptorAnnotations,
 | 
			
		||||
	}, nil
 | 
			
		||||
	return annotations, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user