From 9d062ed8fcdd5845e55ebfe364a41c3524a09fc3 Mon Sep 17 00:00:00 2001 From: Sam Coe Date: Tue, 23 Feb 2021 09:17:35 -0800 Subject: [PATCH] Normalize pr command arguments --- pkg/cmd/pr/close/close.go | 4 ++-- pkg/cmd/pr/comment/comment.go | 1 + pkg/cmd/pr/comment/comment_test.go | 6 ++++++ pkg/cmd/pr/edit/edit.go | 8 +++++--- pkg/cmd/pr/edit/edit_test.go | 13 +++++++++++-- pkg/cmd/pr/reopen/reopen.go | 4 ++-- 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/pkg/cmd/pr/close/close.go b/pkg/cmd/pr/close/close.go index f4cc442c2..20db4960c 100644 --- a/pkg/cmd/pr/close/close.go +++ b/pkg/cmd/pr/close/close.go @@ -35,9 +35,9 @@ func NewCmdClose(f *cmdutil.Factory, runF func(*CloseOptions) error) *cobra.Comm } cmd := &cobra.Command{ - Use: "close { | | }", + Use: "close [ | | ]", Short: "Close a pull request", - Args: cobra.ExactArgs(1), + Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { // support `-R, --repo` override opts.BaseRepo = f.BaseRepo diff --git a/pkg/cmd/pr/comment/comment.go b/pkg/cmd/pr/comment/comment.go index 27847b4fa..8e7c98cb1 100644 --- a/pkg/cmd/pr/comment/comment.go +++ b/pkg/cmd/pr/comment/comment.go @@ -30,6 +30,7 @@ func NewCmdComment(f *cmdutil.Factory, runF func(*shared.CommentableOptions) err Example: heredoc.Doc(` $ gh pr comment 22 --body "This looks great, lets get it deployed." `), + Args: cobra.MaximumNArgs(1), PreRunE: func(cmd *cobra.Command, args []string) error { if repoOverride, _ := cmd.Flags().GetString("repo"); repoOverride != "" && len(args) == 0 { return &cmdutil.FlagError{Err: errors.New("argument required when using the --repo flag")} diff --git a/pkg/cmd/pr/comment/comment_test.go b/pkg/cmd/pr/comment/comment_test.go index 52256d431..94c58a720 100644 --- a/pkg/cmd/pr/comment/comment_test.go +++ b/pkg/cmd/pr/comment/comment_test.go @@ -32,6 +32,12 @@ func TestNewCmdComment(t *testing.T) { }, wantsErr: false, }, + { + name: "two arguments", + input: "1 2", + output: shared.CommentableOptions{}, + wantsErr: true, + }, { name: "pr number", input: "1", diff --git a/pkg/cmd/pr/edit/edit.go b/pkg/cmd/pr/edit/edit.go index 6c1592b4c..46a64068a 100644 --- a/pkg/cmd/pr/edit/edit.go +++ b/pkg/cmd/pr/edit/edit.go @@ -46,7 +46,7 @@ func NewCmdEdit(f *cmdutil.Factory, runF func(*EditOptions) error) *cobra.Comman } cmd := &cobra.Command{ - Use: "edit { | }", + Use: "edit [ | | ]", Short: "Edit a pull request", Example: heredoc.Doc(` $ gh pr edit 23 --title "I found a bug" --body "Nothing works" @@ -56,12 +56,14 @@ func NewCmdEdit(f *cmdutil.Factory, runF func(*EditOptions) error) *cobra.Comman $ gh pr edit 23 --add-project "Roadmap" --remove-project v1,v2 $ gh pr edit 23 --milestone "Version 1" `), - Args: cobra.ExactArgs(1), + Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { // support `-R, --repo` override opts.BaseRepo = f.BaseRepo - opts.SelectorArg = args[0] + if len(args) > 0 { + opts.SelectorArg = args[0] + } flags := cmd.Flags() if flags.Changed("title") { diff --git a/pkg/cmd/pr/edit/edit_test.go b/pkg/cmd/pr/edit/edit_test.go index 35d8278dc..a8f5cf4b2 100644 --- a/pkg/cmd/pr/edit/edit_test.go +++ b/pkg/cmd/pr/edit/edit_test.go @@ -23,8 +23,17 @@ func TestNewCmdEdit(t *testing.T) { wantsErr bool }{ { - name: "no argument", - input: "", + name: "no argument", + input: "", + output: EditOptions{ + SelectorArg: "", + Interactive: true, + }, + wantsErr: false, + }, + { + name: "two arguments", + input: "1 2", output: EditOptions{}, wantsErr: true, }, diff --git a/pkg/cmd/pr/reopen/reopen.go b/pkg/cmd/pr/reopen/reopen.go index 135e341fa..8283e87ef 100644 --- a/pkg/cmd/pr/reopen/reopen.go +++ b/pkg/cmd/pr/reopen/reopen.go @@ -30,9 +30,9 @@ func NewCmdReopen(f *cmdutil.Factory, runF func(*ReopenOptions) error) *cobra.Co } cmd := &cobra.Command{ - Use: "reopen { | | }", + Use: "reopen [ | | ]", Short: "Reopen a pull request", - Args: cobra.ExactArgs(1), + Args: cobra.MaximumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { // support `-R, --repo` override opts.BaseRepo = f.BaseRepo