Skip to content

Commit 56ead91

Browse files
committed
Add helper function to validate exact args in cmdutil
1 parent cbf8a0d commit 56ead91

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

pkg/cmd/gist/edit/edit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func NewCmdEdit(f *cmdutil.Factory, runF func(*EditOptions) error) *cobra.Comman
4949
cmd := &cobra.Command{
5050
Use: "edit {<id> | <url>}",
5151
Short: "Edit one of your gists",
52-
Args: cmdutil.MinimumArgs(1, "cannot edit: gist argument required"),
52+
Args: cmdutil.ExactArgs(1, "cannot edit: gist argument required"),
5353
RunE: func(c *cobra.Command, args []string) error {
5454
opts.Selector = args[0]
5555

pkg/cmd/gist/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func NewCmdView(f *cmdutil.Factory, runF func(*ViewOptions) error) *cobra.Comman
3535
cmd := &cobra.Command{
3636
Use: "view {<id> | <url>}",
3737
Short: "View a gist",
38-
Args: cmdutil.MinimumArgs(1, "cannot view: gist argument required"),
38+
Args: cmdutil.ExactArgs(1, "cannot view: gist argument required"),
3939
RunE: func(cmd *cobra.Command, args []string) error {
4040
opts.Selector = args[0]
4141

pkg/cmd/pr/checkout/checkout.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func NewCmdCheckout(f *cmdutil.Factory, runF func(*CheckoutOptions) error) *cobr
4646
cmd := &cobra.Command{
4747
Use: "checkout {<number> | <url> | <branch>}",
4848
Short: "Check out a pull request in git",
49-
Args: cmdutil.MinimumArgs(1, "argument required"),
49+
Args: cmdutil.ExactArgs(1, "argument required"),
5050
RunE: func(cmd *cobra.Command, args []string) error {
5151
// support `-R, --repo` override
5252
opts.BaseRepo = f.BaseRepo

pkg/cmdutil/args.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,24 @@ func MinimumArgs(n int, msg string) cobra.PositionalArgs {
2121
}
2222
}
2323

24+
func ExactArgs(n int, msg string) cobra.PositionalArgs {
25+
if msg == "" {
26+
return cobra.MinimumNArgs(1)
27+
}
28+
29+
return func(cmd *cobra.Command, args []string) error {
30+
if len(args) > n {
31+
return &FlagError{Err: errors.New("too many arguments")}
32+
}
33+
34+
if len(args) < n {
35+
return &FlagError{Err: errors.New("not enough arguments")}
36+
}
37+
38+
return nil
39+
}
40+
}
41+
2442
func NoArgsQuoteReminder(cmd *cobra.Command, args []string) error {
2543
if len(args) < 1 {
2644
return nil

0 commit comments

Comments
 (0)