From 26e8524ae568c4b4b6778562ca23c7e57dd0cdb2 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 22 Feb 2020 06:29:14 -0500 Subject: [PATCH] refactor: surface errors when running reports --- plugins/buildpacks/buildpacks.go | 8 ++++---- plugins/buildpacks/src/triggers/triggers.go | 2 +- plugins/buildpacks/subcommands.go | 13 ++++++++----- plugins/common/common.go | 10 ++++++---- plugins/network/network.go | 6 +++--- plugins/network/src/triggers/triggers.go | 2 +- plugins/network/subcommands.go | 12 +++++++----- plugins/resource/resource.go | 8 ++++---- plugins/resource/src/triggers/triggers.go | 2 +- plugins/resource/subcommands.go | 12 +++++++----- 10 files changed, 42 insertions(+), 33 deletions(-) diff --git a/plugins/buildpacks/buildpacks.go b/plugins/buildpacks/buildpacks.go index c590a9d16..b8e5e76c2 100644 --- a/plugins/buildpacks/buildpacks.go +++ b/plugins/buildpacks/buildpacks.go @@ -7,14 +7,14 @@ import ( ) // ReportSingleApp is an internal function that displays the app report for one or more apps -func ReportSingleApp(appName, infoFlag string) { +func ReportSingleApp(appName, infoFlag string) error { if err := common.VerifyAppName(appName); err != nil { - common.LogFail(err.Error()) + return err } buildpacks, err := common.PropertyListGet("buildpacks", appName, "buildpacks") if err != nil { - common.LogFail(err.Error()) + return err } infoFlags := map[string]string{ @@ -23,5 +23,5 @@ func ReportSingleApp(appName, infoFlag string) { trimPrefix := false uppercaseFirstCharacter := true - common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) } diff --git a/plugins/buildpacks/src/triggers/triggers.go b/plugins/buildpacks/src/triggers/triggers.go index d8d3420cf..69da1f213 100644 --- a/plugins/buildpacks/src/triggers/triggers.go +++ b/plugins/buildpacks/src/triggers/triggers.go @@ -37,7 +37,7 @@ func main() { buildpacks.TriggerPostExtract(appName, sourceWorkDir) case "report": appName := flag.Arg(0) - buildpacks.ReportSingleApp(appName, "") + err = buildpacks.ReportSingleApp(appName, "") default: common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger)) } diff --git a/plugins/buildpacks/subcommands.go b/plugins/buildpacks/subcommands.go index 060a9f32f..fcb5d1ed2 100644 --- a/plugins/buildpacks/subcommands.go +++ b/plugins/buildpacks/subcommands.go @@ -117,7 +117,7 @@ func CommandRemove(args []string, index int) (err error) { } // CommandReport displays a buildpacks report for one or more apps -func CommandReport(appName string, infoFlag string) { +func CommandReport(appName string, infoFlag string) error { if strings.HasPrefix(appName, "--") { infoFlag = appName appName = "" @@ -126,15 +126,18 @@ func CommandReport(appName string, infoFlag string) { if len(appName) == 0 { apps, err := common.DokkuApps() if err != nil { - return + return err } for _, appName := range apps { - ReportSingleApp(appName, infoFlag) + if err := ReportSingleApp(appName, infoFlag); err != nil { + return err + } } - return + return nil } - ReportSingleApp(appName, infoFlag) + return ReportSingleApp(appName, infoFlag) + } // CommandSet implements buildpacks:set diff --git a/plugins/common/common.go b/plugins/common/common.go index 19cb1195a..e42801f82 100644 --- a/plugins/common/common.go +++ b/plugins/common/common.go @@ -2,6 +2,7 @@ package common import ( "bufio" + "errors" "fmt" "io/ioutil" "os" @@ -353,7 +354,7 @@ func ReadFirstLine(filename string) (text string) { } // ReportSingleApp is an internal function that displays a report for an app -func ReportSingleApp(reportType string, appName string, infoFlag string, infoFlags map[string]string, trimPrefix bool, uppercaseFirstCharacter bool) { +func ReportSingleApp(reportType string, appName string, infoFlag string, infoFlags map[string]string, trimPrefix bool, uppercaseFirstCharacter bool) error { flags := []string{} for key := range infoFlags { flags = append(flags, key) @@ -377,14 +378,14 @@ func ReportSingleApp(reportType string, appName string, infoFlag string, infoFla LogVerbose(fmt.Sprintf("%s%s", RightPad(fmt.Sprintf("%s:", key), 31, " "), v)) } - return + return nil } for _, k := range flags { if infoFlag == k { v := infoFlags[k] fmt.Println(v) - return + return nil } } @@ -393,7 +394,8 @@ func ReportSingleApp(reportType string, appName string, infoFlag string, infoFla for i := 0; i < len(keys); i++ { strkeys[i] = keys[i].String() } - LogFail(fmt.Sprintf("Invalid flag passed, valid flags: %s", strings.Join(strkeys, ", "))) + + return errors.New(fmt.Sprintf("Invalid flag passed, valid flags: %s", strings.Join(strkeys, ", "))) } // RightPad right-pads the string with pad up to len runes diff --git a/plugins/network/network.go b/plugins/network/network.go index 4516b36ed..77fac47e7 100644 --- a/plugins/network/network.go +++ b/plugins/network/network.go @@ -212,9 +212,9 @@ func ClearNetworkConfig(appName string) bool { } // ReportSingleApp is an internal function that displays the app report for one or more apps -func ReportSingleApp(appName, infoFlag string) { +func ReportSingleApp(appName, infoFlag string) error { if err := common.VerifyAppName(appName); err != nil { - common.LogFail(err.Error()) + return err } infoFlags := map[string]string{ @@ -226,5 +226,5 @@ func ReportSingleApp(appName, infoFlag string) { trimPrefix := false uppercaseFirstCharacter := true - common.ReportSingleApp("network", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("network", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) } diff --git a/plugins/network/src/triggers/triggers.go b/plugins/network/src/triggers/triggers.go index ce4b26872..1218e283f 100644 --- a/plugins/network/src/triggers/triggers.go +++ b/plugins/network/src/triggers/triggers.go @@ -87,7 +87,7 @@ func main() { network.TriggerCorePostDeploy(appName) case "report": appName := flag.Arg(0) - network.ReportSingleApp(appName, "") + err = network.ReportSingleApp(appName, "") default: common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger)) } diff --git a/plugins/network/subcommands.go b/plugins/network/subcommands.go index 73c7417d9..0e2653c49 100644 --- a/plugins/network/subcommands.go +++ b/plugins/network/subcommands.go @@ -129,7 +129,7 @@ func CommandRebuildall() { } // CommandReport displays a network report for one or more apps -func CommandReport(appName string, infoFlag string) { +func CommandReport(appName string, infoFlag string) error { if strings.HasPrefix(appName, "--") { infoFlag = appName appName = "" @@ -138,15 +138,17 @@ func CommandReport(appName string, infoFlag string) { if len(appName) == 0 { apps, err := common.DokkuApps() if err != nil { - return + return err } for _, appName := range apps { - ReportSingleApp(appName, infoFlag) + if err := ReportSingleApp(appName, infoFlag); err != nil { + return err + } } - return + return nil } - ReportSingleApp(appName, infoFlag) + return ReportSingleApp(appName, infoFlag) } // CommandSet set or clear a network property for an app diff --git a/plugins/resource/resource.go b/plugins/resource/resource.go index 43774d86d..8de834d0c 100644 --- a/plugins/resource/resource.go +++ b/plugins/resource/resource.go @@ -18,14 +18,14 @@ type Resource struct { } // ReportSingleApp is an internal function that displays the app report for one or more apps -func ReportSingleApp(appName, infoFlag string) { +func ReportSingleApp(appName, infoFlag string) error { if err := common.VerifyAppName(appName); err != nil { - common.LogFail(err.Error()) + return err } resources, err := common.PropertyGetAll("resource", appName) if err != nil { - return + return err } infoFlags := map[string]string{} @@ -36,7 +36,7 @@ func ReportSingleApp(appName, infoFlag string) { trimPrefix := true uppercaseFirstCharacter := false - common.ReportSingleApp("resource", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("resource", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) } // GetResourceValue fetches a single value for a given app/process/request/key combination diff --git a/plugins/resource/src/triggers/triggers.go b/plugins/resource/src/triggers/triggers.go index 79d6e1e19..a18297729 100644 --- a/plugins/resource/src/triggers/triggers.go +++ b/plugins/resource/src/triggers/triggers.go @@ -37,7 +37,7 @@ func main() { err = resource.TriggerPostDelete(appName) case "report": appName := flag.Arg(0) - resource.ReportSingleApp(appName, "") + err = resource.ReportSingleApp(appName, "") case "resource-get-property": appName := flag.Arg(0) processType := flag.Arg(1) diff --git a/plugins/resource/subcommands.go b/plugins/resource/subcommands.go index e705d3016..4366f021e 100644 --- a/plugins/resource/subcommands.go +++ b/plugins/resource/subcommands.go @@ -29,7 +29,7 @@ func CommandLimitClear(args []string, processType string) error { } // CommandReport displays a resource report for one or more apps -func CommandReport(appName string, infoFlag string) { +func CommandReport(appName string, infoFlag string) error { if strings.HasPrefix(appName, "--") { infoFlag = appName appName = "" @@ -38,15 +38,17 @@ func CommandReport(appName string, infoFlag string) { if len(appName) == 0 { apps, err := common.DokkuApps() if err != nil { - return + return err } for _, appName := range apps { - ReportSingleApp(appName, infoFlag) + if err := ReportSingleApp(appName, infoFlag); err != nil { + return err + } } - return + return nil } - ReportSingleApp(appName, infoFlag) + return ReportSingleApp(appName, infoFlag) } // CommandReserve implements resource:reserve