Skip to content

Commit

Permalink
chore: improve error message when attaching with no file or annotation (
Browse files Browse the repository at this point in the history
oras-project#1253)

Signed-off-by: Xiaoxuan Wang <[email protected]>
Signed-off-by: Feynman Zhou <[email protected]>
  • Loading branch information
wangxiaoxuan273 authored and FeynmanZhou committed May 11, 2024
1 parent 7c74587 commit c988451
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
8 changes: 7 additions & 1 deletion cmd/oras/root/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,13 @@ func runAttach(cmd *cobra.Command, opts *attachOptions) error {
return err
}
if len(opts.FileRefs) == 0 && len(annotations[option.AnnotationManifest]) == 0 {
return errors.New("no blob or manifest annotation are provided")
return &oerrors.Error{
Err: errors.New(`neither file nor annotation provided in the command`),
Usage: fmt.Sprintf("%s %s", cmd.Parent().CommandPath(), cmd.Use),
Recommendation: `To attach to an existing artifact, please provide files
via argument or annotations via flag "--annotation". Run "oras attach -h"
for more options and examples`,
}
}

// prepare manifest
Expand Down
4 changes: 2 additions & 2 deletions test/e2e/suite/command/attach.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ var _ = Describe("ORAS beginners:", func() {

It("should fail if no file reference or manifest annotation provided for registry", func() {
ORAS("attach", "--artifact-type", "oras/test", RegistryRef(ZOTHost, ImageRepo, foobar.Tag)).
ExpectFailure().MatchErrKeyWords("Error: no blob or manifest annotation are provided").Exec()
ExpectFailure().MatchErrKeyWords("Error: neither file nor annotation", "Usage:").Exec()
})

It("should fail if no file reference or manifest annotation provided for OCI layout", func() {
root := GinkgoT().TempDir()
ORAS("attach", "--artifact-type", "oras/test", LayoutRef(root, foobar.Tag)).
ExpectFailure().MatchErrKeyWords("Error: no blob or manifest annotation are provided").Exec()
ExpectFailure().MatchErrKeyWords("Error: neither file nor annotation", "Usage:").Exec()
})

It("should fail if distribution spec is unknown", func() {
Expand Down

0 comments on commit c988451

Please sign in to comment.