From e20db01a82a2361bac6ba567bacc6174147eb8aa Mon Sep 17 00:00:00 2001 From: Xiaoxuan Wang Date: Mon, 14 Oct 2024 09:38:02 +0800 Subject: [PATCH 1/3] fix: update --add should add plain descriptor Signed-off-by: Xiaoxuan Wang --- cmd/oras/root/manifest/index/update.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/oras/root/manifest/index/update.go b/cmd/oras/root/manifest/index/update.go index d8a43b07c..ec645fc63 100644 --- a/cmd/oras/root/manifest/index/update.go +++ b/cmd/oras/root/manifest/index/update.go @@ -181,6 +181,7 @@ func addManifests(ctx context.Context, manifests []ocispec.Descriptor, target or return nil, fmt.Errorf("%s is not a manifest", manifestRef) } printUpdateStatus(status.IndexPromptFetched, manifestRef, string(desc.Digest), opts.Printer) + desc = descriptor.Plain(desc) if descriptor.IsImageManifest(desc) { desc.Platform, err = getPlatform(ctx, target, content) if err != nil { From 38ec117ea70c4dc229ef5b1975d619b4c08adf63 Mon Sep 17 00:00:00 2001 From: Xiaoxuan Wang Date: Mon, 14 Oct 2024 16:25:41 +0800 Subject: [PATCH 2/3] resolved comments Signed-off-by: Xiaoxuan Wang --- cmd/oras/root/manifest/index/create.go | 21 +++++++++++++++------ cmd/oras/root/manifest/index/update.go | 9 +++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/cmd/oras/root/manifest/index/create.go b/cmd/oras/root/manifest/index/create.go index 12b51e95d..215d13d39 100644 --- a/cmd/oras/root/manifest/index/create.go +++ b/cmd/oras/root/manifest/index/create.go @@ -153,12 +153,9 @@ func fetchSourceManifests(ctx context.Context, target oras.ReadOnlyTarget, opts return nil, fmt.Errorf("%s is not a manifest", source) } opts.Println(status.IndexPromptFetched, source) - desc = descriptor.Plain(desc) - if descriptor.IsImageManifest(desc) { - desc.Platform, err = getPlatform(ctx, target, content) - if err != nil { - return nil, err - } + desc, err = enrichDescriptor(ctx, target, desc, content) + if err != nil { + return nil, err } resolved = append(resolved, desc) } @@ -209,3 +206,15 @@ func pushIndex(ctx context.Context, target oras.Target, desc ocispec.Descriptor, } return printer.Println("Digest:", desc.Digest) } + +func enrichDescriptor(ctx context.Context, target oras.ReadOnlyTarget, desc ocispec.Descriptor, manifestBytes []byte) (ocispec.Descriptor, error) { + desc = descriptor.Plain(desc) + if descriptor.IsImageManifest(desc) { + var err error + desc.Platform, err = getPlatform(ctx, target, manifestBytes) + if err != nil { + return ocispec.Descriptor{}, err + } + } + return desc, nil +} diff --git a/cmd/oras/root/manifest/index/update.go b/cmd/oras/root/manifest/index/update.go index ec645fc63..dbf3ccf9b 100644 --- a/cmd/oras/root/manifest/index/update.go +++ b/cmd/oras/root/manifest/index/update.go @@ -181,12 +181,9 @@ func addManifests(ctx context.Context, manifests []ocispec.Descriptor, target or return nil, fmt.Errorf("%s is not a manifest", manifestRef) } printUpdateStatus(status.IndexPromptFetched, manifestRef, string(desc.Digest), opts.Printer) - desc = descriptor.Plain(desc) - if descriptor.IsImageManifest(desc) { - desc.Platform, err = getPlatform(ctx, target, content) - if err != nil { - return nil, err - } + desc, err = enrichDescriptor(ctx, target, desc, content) + if err != nil { + return nil, err } manifests = append(manifests, desc) printUpdateStatus(status.IndexPromptAdded, manifestRef, string(desc.Digest), opts.Printer) From 955ade6d0f8f8711677c6dbee67af8837350052e Mon Sep 17 00:00:00 2001 From: Xiaoxuan Wang Date: Mon, 14 Oct 2024 16:43:00 +0800 Subject: [PATCH 3/3] resolved comments Signed-off-by: Xiaoxuan Wang --- cmd/oras/root/manifest/index/create.go | 3 +-- cmd/oras/root/manifest/index/update.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/oras/root/manifest/index/create.go b/cmd/oras/root/manifest/index/create.go index 215d13d39..c8040559f 100644 --- a/cmd/oras/root/manifest/index/create.go +++ b/cmd/oras/root/manifest/index/create.go @@ -153,8 +153,7 @@ func fetchSourceManifests(ctx context.Context, target oras.ReadOnlyTarget, opts return nil, fmt.Errorf("%s is not a manifest", source) } opts.Println(status.IndexPromptFetched, source) - desc, err = enrichDescriptor(ctx, target, desc, content) - if err != nil { + if desc, err = enrichDescriptor(ctx, target, desc, content); err != nil { return nil, err } resolved = append(resolved, desc) diff --git a/cmd/oras/root/manifest/index/update.go b/cmd/oras/root/manifest/index/update.go index dbf3ccf9b..7bff8a259 100644 --- a/cmd/oras/root/manifest/index/update.go +++ b/cmd/oras/root/manifest/index/update.go @@ -181,8 +181,7 @@ func addManifests(ctx context.Context, manifests []ocispec.Descriptor, target or return nil, fmt.Errorf("%s is not a manifest", manifestRef) } printUpdateStatus(status.IndexPromptFetched, manifestRef, string(desc.Digest), opts.Printer) - desc, err = enrichDescriptor(ctx, target, desc, content) - if err != nil { + if desc, err = enrichDescriptor(ctx, target, desc, content); err != nil { return nil, err } manifests = append(manifests, desc)