From 66249a8592d8edd735115150553a3ec292f70f51 Mon Sep 17 00:00:00 2001 From: Xiaoxuan Wang Date: Thu, 10 Oct 2024 16:49:52 +0800 Subject: [PATCH] resolved comments Signed-off-by: Xiaoxuan Wang --- .../internal/display/content/manifest_index.go | 2 +- cmd/oras/internal/display/metadata/discard.go | 7 +------ .../internal/display/metadata/interface.go | 14 ++++++++------ .../display/metadata/text/manifest_index.go | 9 +++++---- cmd/oras/internal/display/status/discard.go | 18 ++++-------------- cmd/oras/internal/display/status/interface.go | 17 ++++++----------- cmd/oras/internal/display/status/text.go | 18 +++++++++--------- cmd/oras/root/manifest/index/create.go | 6 +++--- cmd/oras/root/manifest/index/update.go | 14 +++++++------- 9 files changed, 44 insertions(+), 61 deletions(-) diff --git a/cmd/oras/internal/display/content/manifest_index.go b/cmd/oras/internal/display/content/manifest_index.go index 19b6bc579..6db1ee380 100644 --- a/cmd/oras/internal/display/content/manifest_index.go +++ b/cmd/oras/internal/display/content/manifest_index.go @@ -33,7 +33,7 @@ type manifestIndexCreate struct { // OnContentCreated is called after index content is created. func (h *manifestIndexCreate) OnContentCreated(manifest []byte) error { out := h.stdout - if h.outputPath != "-" && h.outputPath != "" { + if h.outputPath != "" && h.outputPath != "-" { f, err := os.Create(h.outputPath) if err != nil { return fmt.Errorf("failed to open %q: %w", h.outputPath, err) diff --git a/cmd/oras/internal/display/metadata/discard.go b/cmd/oras/internal/display/metadata/discard.go index c9584942c..ad7330b77 100644 --- a/cmd/oras/internal/display/metadata/discard.go +++ b/cmd/oras/internal/display/metadata/discard.go @@ -43,7 +43,7 @@ func (discard) OnCompleted(ocispec.Descriptor) error { } // OnIndexPacked implements ManifestIndexCreateHandler. -func (discard) OnIndexPacked(string) error { +func (discard) OnIndexPacked(ocispec.Descriptor) error { return nil } @@ -66,8 +66,3 @@ func (discard) OnManifestAdded(string, digest.Digest) error { func (discard) OnIndexMerged(string, digest.Digest) error { return nil } - -// OnIndexUpdated implements ManifestIndexUpdateHandler. -func (discard) OnIndexUpdated(digest.Digest) error { - return nil -} diff --git a/cmd/oras/internal/display/metadata/interface.go b/cmd/oras/internal/display/metadata/interface.go index 4675b889a..e310e1b39 100644 --- a/cmd/oras/internal/display/metadata/interface.go +++ b/cmd/oras/internal/display/metadata/interface.go @@ -79,23 +79,25 @@ type ManifestPushHandler interface { TaggedHandler } +type manifestPackHandler interface { + OnIndexPacked(desc ocispec.Descriptor) error + OnIndexPushed(path string) error + OnCompleted(desc ocispec.Descriptor) error +} + // ManifestIndexCreateHandler handles metadata output for index create events. type ManifestIndexCreateHandler interface { TaggedHandler - OnIndexPacked(shortDigest string) error - OnIndexPushed(path string) error - OnCompleted(desc ocispec.Descriptor) error + manifestPackHandler } // ManifestIndexUpdateHandler handles metadata output for index update events. type ManifestIndexUpdateHandler interface { TaggedHandler + manifestPackHandler OnManifestRemoved(digest digest.Digest) error OnManifestAdded(manifestRef string, digest digest.Digest) error OnIndexMerged(indexRef string, digest digest.Digest) error - OnIndexUpdated(digest digest.Digest) error - OnIndexPushed(path string) error - OnCompleted(desc ocispec.Descriptor) error } // CopyHandler handles metadata output for cp events. diff --git a/cmd/oras/internal/display/metadata/text/manifest_index.go b/cmd/oras/internal/display/metadata/text/manifest_index.go index e6f4b51cf..36dada48e 100644 --- a/cmd/oras/internal/display/metadata/text/manifest_index.go +++ b/cmd/oras/internal/display/metadata/text/manifest_index.go @@ -21,6 +21,7 @@ import ( "oras.land/oras/cmd/oras/internal/display/metadata" "oras.land/oras/cmd/oras/internal/output" "oras.land/oras/internal/contentutil" + "oras.land/oras/internal/descriptor" ) // ManifestIndexCreateHandler handles text metadata output for index create events. @@ -36,8 +37,8 @@ func NewManifestIndexCreateHandler(printer *output.Printer) metadata.ManifestInd } // OnIndexPacked implements metadata.ManifestIndexCreateHandler. -func (h *ManifestIndexCreateHandler) OnIndexPacked(shortDigest string) error { - return h.printer.Println("Packed", shortDigest, ocispec.MediaTypeImageIndex) +func (h *ManifestIndexCreateHandler) OnIndexPacked(desc ocispec.Descriptor) error { + return h.printer.Println("Packed", descriptor.ShortDigest(desc), ocispec.MediaTypeImageIndex) } // OnIndexPushed implements metadata.ManifestIndexCreateHandler. @@ -88,8 +89,8 @@ func (miuh ManifestIndexUpdateHandler) OnIndexMerged(ref string, digest digest.D } // OnIndexUpdated implements metadata.ManifestIndexUpdateHandler. -func (miuh ManifestIndexUpdateHandler) OnIndexUpdated(digest digest.Digest) error { - return miuh.printer.Println("Updated", digest) +func (miuh ManifestIndexUpdateHandler) OnIndexPacked(desc ocispec.Descriptor) error { + return miuh.printer.Println("Updated", desc.Digest) } // OnIndexPushed implements metadata.ManifestIndexUpdateHandler. diff --git a/cmd/oras/internal/display/status/discard.go b/cmd/oras/internal/display/status/discard.go index 917572885..76b1db7e8 100644 --- a/cmd/oras/internal/display/status/discard.go +++ b/cmd/oras/internal/display/status/discard.go @@ -90,13 +90,13 @@ func (DiscardHandler) OnNodeSkipped(desc ocispec.Descriptor) error { return nil } -// OnSourceManifestFetching implements ManifestReferenceFetchHandler. -func (DiscardHandler) OnManifestFetching(string) error { +// OnFetching implements referenceFetchHandler. +func (DiscardHandler) OnFetching(string) error { return nil } -// OnSourceManifestFetched implements ManifestReferenceFetchHandler. -func (DiscardHandler) OnManifestFetched(string, digest.Digest) error { +// OnFetched implements referenceFetchHandler. +func (DiscardHandler) OnFetched(string, ocispec.Descriptor) error { return nil } @@ -110,16 +110,6 @@ func (DiscardHandler) OnManifestAdded(string, digest.Digest) error { return nil } -// OnIndexFetching implements ManifestIndexUpdateHandler. -func (DiscardHandler) OnIndexFetching(string) error { - return nil -} - -// OnIndexFetched implements ManifestIndexUpdateHandler. -func (DiscardHandler) OnIndexFetched(string, digest.Digest) error { - return nil -} - // OnIndexMerged implements ManifestIndexUpdateHandler. func (DiscardHandler) OnIndexMerged(string, digest.Digest) error { return nil diff --git a/cmd/oras/internal/display/status/interface.go b/cmd/oras/internal/display/status/interface.go index 8bafeb7c5..6485ed5be 100644 --- a/cmd/oras/internal/display/status/interface.go +++ b/cmd/oras/internal/display/status/interface.go @@ -18,7 +18,6 @@ package status import ( "context" - "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "oras.land/oras-go/v2" ) @@ -64,20 +63,16 @@ type CopyHandler interface { OnMounted(ctx context.Context, desc ocispec.Descriptor) error } -// ManifestReferenceFetchHandler handles status output for manifest reference fetch events. -type ManifestReferenceFetchHandler interface { - OnManifestFetching(manifestRef string) error - OnManifestFetched(manifestRef string, digest digest.Digest) error +// referenceFetchHandler handles status output for reference fetch events. +type referenceFetchHandler interface { + OnFetching(manifestRef string) error + OnFetched(manifestRef string, desc ocispec.Descriptor) error } // ManifestIndexCreateHandler handles status output for manifest index create command. type ManifestIndexCreateHandler interface { - ManifestReferenceFetchHandler + referenceFetchHandler } // ManifestIndexUpdateHandler handles status output for manifest index update command. -type ManifestIndexUpdateHandler interface { - ManifestReferenceFetchHandler - OnIndexFetching(indexRef string) error - OnIndexFetched(indexRef string, digest digest.Digest) error -} +type ManifestIndexUpdateHandler ManifestIndexCreateHandler diff --git a/cmd/oras/internal/display/status/text.go b/cmd/oras/internal/display/status/text.go index 2c5323fe9..483ac13e6 100644 --- a/cmd/oras/internal/display/status/text.go +++ b/cmd/oras/internal/display/status/text.go @@ -187,13 +187,13 @@ type TextManifestIndexCreateHandler struct { printer *output.Printer } -// OnSourceManifestFetching implements ManifestIndexCreateHandler. -func (mich TextManifestIndexCreateHandler) OnManifestFetching(source string) error { +// OnFetching implements ManifestIndexCreateHandler. +func (mich TextManifestIndexCreateHandler) OnFetching(source string) error { return mich.printer.Println(IndexPromptFetching, source) } -// OnSourceManifestFetched implements ManifestIndexCreateHandler. -func (mich TextManifestIndexCreateHandler) OnManifestFetched(source string, _ digest.Digest) error { +// OnFetched implements ManifestIndexCreateHandler. +func (mich TextManifestIndexCreateHandler) OnFetched(source string, _ ocispec.Descriptor) error { return mich.printer.Println(IndexPromptFetched, source) } @@ -223,17 +223,17 @@ func (miuh TextManifestIndexUpdateHandler) OnIndexFetched(indexRef string, diges return miuh.printer.Println(IndexPromptFetched, digest, indexRef) } -// OnManifestFetching implements ManifestIndexUpdateHandler. -func (miuh TextManifestIndexUpdateHandler) OnManifestFetching(ref string) error { +// OnFetching implements ManifestIndexUpdateHandler. +func (miuh TextManifestIndexUpdateHandler) OnFetching(ref string) error { return miuh.printer.Println(IndexPromptFetching, ref) } -// OnManifestFetched implements ManifestIndexUpdateHandler. -func (miuh TextManifestIndexUpdateHandler) OnManifestFetched(ref string, digest digest.Digest) error { +// OnFetched implements ManifestIndexUpdateHandler. +func (miuh TextManifestIndexUpdateHandler) OnFetched(ref string, desc ocispec.Descriptor) error { if contentutil.IsDigest(ref) { return miuh.printer.Println(IndexPromptFetched, ref) } - return miuh.printer.Println(IndexPromptFetched, digest, ref) + return miuh.printer.Println(IndexPromptFetched, desc.Digest, ref) } // NewTextManifestIndexUpdateHandler returns a new handler for manifest index create command. diff --git a/cmd/oras/root/manifest/index/create.go b/cmd/oras/root/manifest/index/create.go index e5109f9d8..f23153323 100644 --- a/cmd/oras/root/manifest/index/create.go +++ b/cmd/oras/root/manifest/index/create.go @@ -128,7 +128,7 @@ func createIndex(cmd *cobra.Command, opts createOptions) error { return err } desc := content.NewDescriptorFromBytes(ocispec.MediaTypeImageIndex, indexBytes) - if err := displayMetadata.OnIndexPacked(descriptor.ShortDigest(desc)); err != nil { + if err := displayMetadata.OnIndexPacked(desc); err != nil { return err } if err := displayContent.OnContentCreated(indexBytes); err != nil { @@ -145,7 +145,7 @@ func createIndex(cmd *cobra.Command, opts createOptions) error { func fetchSourceManifests(ctx context.Context, displayStatus status.ManifestIndexCreateHandler, target oras.ReadOnlyTarget, sources []string) ([]ocispec.Descriptor, error) { resolved := []ocispec.Descriptor{} for _, source := range sources { - if err := displayStatus.OnManifestFetching(source); err != nil { + if err := displayStatus.OnFetching(source); err != nil { return nil, err } desc, content, err := oras.FetchBytes(ctx, target, source, oras.DefaultFetchBytesOptions) @@ -155,7 +155,7 @@ func fetchSourceManifests(ctx context.Context, displayStatus status.ManifestInde if !descriptor.IsManifest(desc) { return nil, fmt.Errorf("%s is not a manifest", source) } - if err := displayStatus.OnManifestFetched(source, desc.Digest); err != nil { + if err := displayStatus.OnFetched(source, desc); err != nil { return nil, err } desc = descriptor.Plain(desc) diff --git a/cmd/oras/root/manifest/index/update.go b/cmd/oras/root/manifest/index/update.go index 46913134e..ccaf6ac17 100644 --- a/cmd/oras/root/manifest/index/update.go +++ b/cmd/oras/root/manifest/index/update.go @@ -140,7 +140,7 @@ func updateIndex(cmd *cobra.Command, opts updateOptions) error { return err } desc := content.NewDescriptorFromBytes(index.MediaType, indexBytes) - if err := displayMetadata.OnIndexUpdated(desc.Digest); err != nil { + if err := displayMetadata.OnIndexPacked(desc); err != nil { return err } path := getPushPath(opts.RawReference, opts.Type, opts.Reference, opts.Path) @@ -156,7 +156,7 @@ func updateIndex(cmd *cobra.Command, opts updateOptions) error { } func fetchIndex(ctx context.Context, handler status.ManifestIndexUpdateHandler, target oras.ReadOnlyTarget, reference string) (ocispec.Index, error) { - if err := handler.OnIndexFetching(reference); err != nil { + if err := handler.OnFetching(reference); err != nil { return ocispec.Index{}, err } desc, content, err := oras.FetchBytes(ctx, target, reference, oras.DefaultFetchBytesOptions) @@ -166,7 +166,7 @@ func fetchIndex(ctx context.Context, handler status.ManifestIndexUpdateHandler, if !descriptor.IsIndex(desc) { return ocispec.Index{}, fmt.Errorf("%s is not an index", reference) } - if err := handler.OnIndexFetched(reference, desc.Digest); err != nil { + if err := handler.OnFetched(reference, desc); err != nil { return ocispec.Index{}, err } var index ocispec.Index @@ -178,7 +178,7 @@ func fetchIndex(ctx context.Context, handler status.ManifestIndexUpdateHandler, func addManifests(ctx context.Context, displayStatus status.ManifestIndexUpdateHandler, displayMetadata metadata.ManifestIndexUpdateHandler, manifests []ocispec.Descriptor, target oras.ReadOnlyTarget, addArguments []string) ([]ocispec.Descriptor, error) { for _, manifestRef := range addArguments { - if err := displayStatus.OnManifestFetching(manifestRef); err != nil { + if err := displayStatus.OnFetching(manifestRef); err != nil { return nil, err } desc, content, err := oras.FetchBytes(ctx, target, manifestRef, oras.DefaultFetchBytesOptions) @@ -188,7 +188,7 @@ func addManifests(ctx context.Context, displayStatus status.ManifestIndexUpdateH if !descriptor.IsManifest(desc) { return nil, fmt.Errorf("%s is not a manifest", manifestRef) } - if err := displayStatus.OnManifestFetched(manifestRef, desc.Digest); err != nil { + if err := displayStatus.OnFetched(manifestRef, desc); err != nil { return nil, err } if descriptor.IsImageManifest(desc) { @@ -207,7 +207,7 @@ func addManifests(ctx context.Context, displayStatus status.ManifestIndexUpdateH func mergeIndexes(ctx context.Context, displayStatus status.ManifestIndexUpdateHandler, displayMetadata metadata.ManifestIndexUpdateHandler, manifests []ocispec.Descriptor, target oras.ReadOnlyTarget, mergeArguments []string) ([]ocispec.Descriptor, error) { for _, indexRef := range mergeArguments { - if err := displayStatus.OnIndexFetching(indexRef); err != nil { + if err := displayStatus.OnFetching(indexRef); err != nil { return nil, err } desc, content, err := oras.FetchBytes(ctx, target, indexRef, oras.DefaultFetchBytesOptions) @@ -217,7 +217,7 @@ func mergeIndexes(ctx context.Context, displayStatus status.ManifestIndexUpdateH if !descriptor.IsIndex(desc) { return nil, fmt.Errorf("%s is not an index", indexRef) } - if err := displayStatus.OnIndexFetched(indexRef, desc.Digest); err != nil { + if err := displayStatus.OnFetched(indexRef, desc); err != nil { return nil, err } var index ocispec.Index