From 74de7473c28a87ac80f049e5465431aab37c33d7 Mon Sep 17 00:00:00 2001 From: Xiaoxuan Wang Date: Tue, 26 Mar 2024 07:31:33 +0000 Subject: [PATCH] resolved comments Signed-off-by: Xiaoxuan Wang --- cmd/oras/internal/option/target.go | 15 ++++++++++----- cmd/oras/internal/option/target_test.go | 10 +++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/cmd/oras/internal/option/target.go b/cmd/oras/internal/option/target.go index 3d3a2cbdf..2481c815e 100644 --- a/cmd/oras/internal/option/target.go +++ b/cmd/oras/internal/option/target.go @@ -98,13 +98,11 @@ func (opts *Target) ApplyFlagsWithPrefix(fs *pflag.FlagSet, prefix, description func (opts *Target) Parse() error { switch { case opts.IsOCILayout: - var err error opts.Type = TargetTypeOCILayout if len(opts.headerFlags) != 0 { return errors.New("custom header flags cannot be used on an OCI image layout target") } - opts.Path, opts.Reference, err = opts.parseOCILayoutReference() - return err + return opts.parseOCILayoutReference() default: opts.Type = TargetTypeRemote if _, err := registry.ParseReference(opts.RawReference); err != nil { @@ -118,8 +116,12 @@ func (opts *Target) Parse() error { } // parseOCILayoutReference parses the raw in format of [:|@] -func (opts *Target) parseOCILayoutReference() (path string, ref string, err error) { +func (opts *Target) parseOCILayoutReference() error { raw := opts.RawReference + var path string + var ref string + var err error + if idx := strings.LastIndex(raw, "@"); idx != -1 { // `digest` found path = raw[:idx] @@ -129,9 +131,12 @@ func (opts *Target) parseOCILayoutReference() (path string, ref string, err erro path, ref, err = fileref.Parse(raw, "") if err != nil { err = errors.Join(err, errdef.ErrInvalidReference) + return err } } - return + opts.Path = path + opts.Reference = ref + return nil } func (opts *Target) newOCIStore() (*oci.Store, error) { diff --git a/cmd/oras/internal/option/target_test.go b/cmd/oras/internal/option/target_test.go index 5f19102ac..5dc94249d 100644 --- a/cmd/oras/internal/option/target_test.go +++ b/cmd/oras/internal/option/target_test.go @@ -85,16 +85,16 @@ func Test_parseOCILayoutReference(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { opts.RawReference = tt.raw - got, got1, err := opts.parseOCILayoutReference() + err := opts.parseOCILayoutReference() if (err != nil) != tt.wantErr { t.Errorf("parseOCILayoutReference() error = %v, wantErr %v", err, tt.wantErr) return } - if got != tt.want { - t.Errorf("parseOCILayoutReference() got = %v, want %v", got, tt.want) + if opts.Path != tt.want { + t.Errorf("parseOCILayoutReference() got = %v, want %v", opts.Path, tt.want) } - if got1 != tt.want1 { - t.Errorf("parseOCILayoutReference() got1 = %v, want %v", got1, tt.want1) + if opts.Reference != tt.want1 { + t.Errorf("parseOCILayoutReference() got1 = %v, want %v", opts.Reference, tt.want1) } }) }