Aggregate errors from Before/After

Previously `After` would overwrite any error from `Before`.
This commit is contained in:
Jesse Szwedko
2015-06-01 21:11:20 -07:00
parent 5d58d5b313
commit 7ed7a51f86
3 changed files with 79 additions and 8 deletions

24
app.go
View File

@@ -132,10 +132,14 @@ func (a *App) Run(arguments []string) (err error) {
if a.After != nil {
defer func() {
// err is always nil here.
// There is a check to see if it is non-nil
// just few lines before.
err = a.After(context)
afterErr := a.After(context)
if afterErr != nil {
if err != nil {
err = NewMultiError(err, afterErr)
} else {
err = afterErr
}
}
}()
}
@@ -225,10 +229,14 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error) {
if a.After != nil {
defer func() {
// err is always nil here.
// There is a check to see if it is non-nil
// just few lines before.
err = a.After(context)
afterErr := a.After(context)
if afterErr != nil {
if err != nil {
err = NewMultiError(err, afterErr)
} else {
err = afterErr
}
}
}()
}