DRY error handling

main
jhowarth 9 years ago
parent cbd95292ac
commit e67e05f617

@ -179,8 +179,9 @@ func (a *App) RunAsSubcommand(ctx *Context) error {
context := NewContext(a, set, ctx.globalSet)
if nerr != nil {
fmt.Println(nerr)
// Define here so it closes over the above variables
showErrAndHelp := func(err error) {
fmt.Println(err)
fmt.Println("")
if len(a.Commands) > 0 {
ShowSubcommandHelp(context)
@ -188,18 +189,16 @@ func (a *App) RunAsSubcommand(ctx *Context) error {
ShowCommandHelp(ctx, context.Args().First())
}
fmt.Println("")
}
if nerr != nil {
showErrAndHelp(nerr)
return nerr
}
if cerr != nil {
fmt.Println(cerr)
fmt.Println("")
if len(a.Commands) > 0 {
ShowSubcommandHelp(context)
} else {
ShowCommandHelp(ctx, context.Args().First())
}
fmt.Println("")
showErrAndHelp(cerr)
return cerr
}

@ -73,28 +73,28 @@ func (c Command) Run(ctx *Context) error {
err = set.Parse(ctx.Args().Tail())
}
if err != nil {
fmt.Printf("Incorrect Usage.\n\n")
// Define here so it closes over the above variables
showErrAndHelp := func(err error) {
fmt.Println(err)
fmt.Println("")
ShowCommandHelp(ctx, c.Name)
fmt.Println("")
}
if err != nil {
showErrAndHelp(fmt.Errorf("Incorrect Usage."))
return err
}
nerr := normalizeFlags(c.Flags, set)
if nerr != nil {
fmt.Println(nerr)
fmt.Println("")
ShowCommandHelp(ctx, c.Name)
fmt.Println("")
showErrAndHelp(nerr)
return nerr
}
cerr := checkRequiredFlags(c.Flags, set)
if cerr != nil {
fmt.Println(cerr)
fmt.Println("")
ShowCommandHelp(ctx, c.Name)
fmt.Println("")
showErrAndHelp(cerr)
return cerr
}

Loading…
Cancel
Save