Merge pull request #1445 from Dokiys/fix/hidehelp_with_none_args
Fix HideHelp
This commit is contained in:
commit
0c9527f4b7
4
app.go
4
app.go
@ -275,7 +275,9 @@ func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
|
|||||||
cCtx := NewContext(a, set, &Context{Context: ctx})
|
cCtx := NewContext(a, set, &Context{Context: ctx})
|
||||||
if nerr != nil {
|
if nerr != nil {
|
||||||
_, _ = fmt.Fprintln(a.Writer, nerr)
|
_, _ = fmt.Fprintln(a.Writer, nerr)
|
||||||
|
if !a.HideHelp {
|
||||||
_ = ShowAppHelp(cCtx)
|
_ = ShowAppHelp(cCtx)
|
||||||
|
}
|
||||||
return nerr
|
return nerr
|
||||||
}
|
}
|
||||||
cCtx.shellComplete = shellComplete
|
cCtx.shellComplete = shellComplete
|
||||||
@ -296,7 +298,9 @@ func (a *App) RunContext(ctx context.Context, arguments []string) (err error) {
|
|||||||
fmt.Fprintf(a.Writer, suggestion)
|
fmt.Fprintf(a.Writer, suggestion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !a.HideHelp {
|
||||||
_ = ShowAppHelp(cCtx)
|
_ = ShowAppHelp(cCtx)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
52
app_test.go
52
app_test.go
@ -1873,31 +1873,67 @@ func TestApp_Run_CommandSubcommandHelpName(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestApp_Run_Help(t *testing.T) {
|
func TestApp_Run_Help(t *testing.T) {
|
||||||
var helpArguments = [][]string{{"boom", "--help"}, {"boom", "-h"}, {"boom", "help"}}
|
var tests = []struct {
|
||||||
|
helpArguments []string
|
||||||
for _, args := range helpArguments {
|
hideHelp bool
|
||||||
t.Run(fmt.Sprintf("checking with arguments %v", args), func(t *testing.T) {
|
wantContains string
|
||||||
|
wantErr error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "--help"},
|
||||||
|
hideHelp: false,
|
||||||
|
wantContains: "boom - make an explosive entrance",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "-h"},
|
||||||
|
hideHelp: false,
|
||||||
|
wantContains: "boom - make an explosive entrance",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "help"},
|
||||||
|
hideHelp: false,
|
||||||
|
wantContains: "boom - make an explosive entrance",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "--help"},
|
||||||
|
hideHelp: true,
|
||||||
|
wantErr: fmt.Errorf("flag: help requested"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "-h"},
|
||||||
|
hideHelp: true,
|
||||||
|
wantErr: fmt.Errorf("flag: help requested"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
helpArguments: []string{"boom", "help"},
|
||||||
|
hideHelp: true,
|
||||||
|
wantContains: "boom I say!",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(fmt.Sprintf("checking with arguments %v", tt.helpArguments), func(t *testing.T) {
|
||||||
buf := new(bytes.Buffer)
|
buf := new(bytes.Buffer)
|
||||||
|
|
||||||
app := &App{
|
app := &App{
|
||||||
Name: "boom",
|
Name: "boom",
|
||||||
Usage: "make an explosive entrance",
|
Usage: "make an explosive entrance",
|
||||||
Writer: buf,
|
Writer: buf,
|
||||||
|
HideHelp: tt.hideHelp,
|
||||||
Action: func(c *Context) error {
|
Action: func(c *Context) error {
|
||||||
buf.WriteString("boom I say!")
|
buf.WriteString("boom I say!")
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
err := app.Run(args)
|
err := app.Run(tt.helpArguments)
|
||||||
if err != nil {
|
if err != nil && err.Error() != tt.wantErr.Error() {
|
||||||
t.Error(err)
|
t.Errorf("want err: %s, did note %s\n", tt.wantErr, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
output := buf.String()
|
output := buf.String()
|
||||||
|
|
||||||
if !strings.Contains(output, "boom - make an explosive entrance") {
|
if !strings.Contains(output, tt.wantContains) {
|
||||||
t.Errorf("want help to contain %q, did not: \n%q", "boom - make an explosive entrance", output)
|
t.Errorf("want help to contain %q, did not: \n%q", "boom - make an explosive entrance", output)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -125,7 +125,9 @@ func (c *Command) Run(ctx *Context) (err error) {
|
|||||||
fmt.Fprintf(cCtx.App.Writer, suggestion)
|
fmt.Fprintf(cCtx.App.Writer, suggestion)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !c.HideHelp {
|
||||||
_ = ShowCommandHelp(cCtx, c.Name)
|
_ = ShowCommandHelp(cCtx, c.Name)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +137,9 @@ func (c *Command) Run(ctx *Context) (err error) {
|
|||||||
|
|
||||||
cerr := cCtx.checkRequiredFlags(c.Flags)
|
cerr := cCtx.checkRequiredFlags(c.Flags)
|
||||||
if cerr != nil {
|
if cerr != nil {
|
||||||
|
if !c.HideHelp {
|
||||||
_ = ShowCommandHelp(cCtx, c.Name)
|
_ = ShowCommandHelp(cCtx, c.Name)
|
||||||
|
}
|
||||||
return cerr
|
return cerr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ func ExampleApp_Suggest() {
|
|||||||
app := &App{
|
app := &App{
|
||||||
Name: "greet",
|
Name: "greet",
|
||||||
Suggest: true,
|
Suggest: true,
|
||||||
HideHelp: true,
|
HideHelp: false,
|
||||||
HideHelpCommand: true,
|
HideHelpCommand: true,
|
||||||
CustomAppHelpTemplate: "(this space intentionally left blank)\n",
|
CustomAppHelpTemplate: "(this space intentionally left blank)\n",
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
@ -149,7 +149,6 @@ func ExampleApp_Suggest_command() {
|
|||||||
app := &App{
|
app := &App{
|
||||||
Name: "greet",
|
Name: "greet",
|
||||||
Suggest: true,
|
Suggest: true,
|
||||||
HideHelp: true,
|
|
||||||
HideHelpCommand: true,
|
HideHelpCommand: true,
|
||||||
CustomAppHelpTemplate: "(this space intentionally left blank)\n",
|
CustomAppHelpTemplate: "(this space intentionally left blank)\n",
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
@ -162,6 +161,7 @@ func ExampleApp_Suggest_command() {
|
|||||||
Commands: []*Command{
|
Commands: []*Command{
|
||||||
{
|
{
|
||||||
Name: "neighbors",
|
Name: "neighbors",
|
||||||
|
HideHelp: false,
|
||||||
CustomHelpTemplate: "(this space intentionally left blank)\n",
|
CustomHelpTemplate: "(this space intentionally left blank)\n",
|
||||||
Flags: []Flag{
|
Flags: []Flag{
|
||||||
&BoolFlag{Name: "smiling"},
|
&BoolFlag{Name: "smiling"},
|
||||||
|
Loading…
Reference in New Issue
Block a user