From af1d8a60e02739bbddb1d8cde93733ed0dd0f87b Mon Sep 17 00:00:00 2001 From: Eric Hagman Date: Wed, 21 Oct 2020 23:15:58 -0400 Subject: [PATCH] Print friendly error when "gh repo clone" is missing required argument --- pkg/cmd/repo/clone/clone.go | 10 ++++++++-- pkg/cmd/repo/clone/clone_test.go | 7 +++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pkg/cmd/repo/clone/clone.go b/pkg/cmd/repo/clone/clone.go index 6dc225538..3a444f44c 100644 --- a/pkg/cmd/repo/clone/clone.go +++ b/pkg/cmd/repo/clone/clone.go @@ -1,6 +1,7 @@ package clone import ( + "errors" "fmt" "net/http" "strings" @@ -37,8 +38,13 @@ func NewCmdClone(f *cmdutil.Factory, runF func(*CloneOptions) error) *cobra.Comm cmd := &cobra.Command{ DisableFlagsInUseLine: true, - Use: "clone [] [-- ...]", - Args: cobra.MinimumNArgs(1), + Use: "clone [] [-- ...]", + Args: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + return &cmdutil.FlagError{Err: errors.New("cannot clone: no repository name given")} + } + return nil + }, Short: "Clone a repository locally", Long: heredoc.Doc(` Clone a GitHub repository locally. diff --git a/pkg/cmd/repo/clone/clone_test.go b/pkg/cmd/repo/clone/clone_test.go index f696cd354..8c81c629f 100644 --- a/pkg/cmd/repo/clone/clone_test.go +++ b/pkg/cmd/repo/clone/clone_test.go @@ -210,3 +210,10 @@ func Test_RepoClone_flagError(t *testing.T) { t.Errorf("unexpected error %v", err) } } + +func Test_RepoClone_noArgError(t *testing.T) { + _, err := runCloneCommand(nil, "") + if err == nil || err.Error() != "cannot clone: no repository name given" { + t.Errorf("unexpected error %v", err) + } +}