diff --git a/util/imagetools/create.go b/util/imagetools/create.go index dca0ae1f..8d078426 100644 --- a/util/imagetools/create.go +++ b/util/imagetools/create.go @@ -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 }