From e67e05f617978eec7bba579a6c86f3d0c11ad96b Mon Sep 17 00:00:00 2001 From: jhowarth Date: Mon, 2 Mar 2015 11:56:29 -0800 Subject: [PATCH] DRY error handling --- app.go | 19 +++++++++---------- command.go | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/app.go b/app.go index e87ed98..d91e6e3 100644 --- a/app.go +++ b/app.go @@ -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 } diff --git a/command.go b/command.go index 2ade6fe..833552c 100644 --- a/command.go +++ b/command.go @@ -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 }