From d70a9be97e85a269cfebc04ae1930770cc931a19 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 7 Jan 2021 01:34:05 -0500 Subject: [PATCH] fix: correct issue where all flags were not shown if an invalid flag was specified --- plugins/apps/report.go | 7 ++++++- plugins/buildpacks/report.go | 7 ++++++- plugins/common/common.go | 23 ++++++++++++----------- plugins/logs/report.go | 7 ++++++- plugins/network/report.go | 7 ++++++- plugins/proxy/report.go | 7 ++++++- plugins/ps/report.go | 7 ++++++- plugins/resource/resource.go | 11 ++++++++--- 8 files changed, 56 insertions(+), 20 deletions(-) diff --git a/plugins/apps/report.go b/plugins/apps/report.go index d74d9ce51..491a45d6c 100644 --- a/plugins/apps/report.go +++ b/plugins/apps/report.go @@ -18,10 +18,15 @@ func ReportSingleApp(appName, infoFlag string) error { "--app-locked": reportLocked, } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("app", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("app", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func reportDir(appName string) string { diff --git a/plugins/buildpacks/report.go b/plugins/buildpacks/report.go index b255095f2..e67bdd72b 100644 --- a/plugins/buildpacks/report.go +++ b/plugins/buildpacks/report.go @@ -16,10 +16,15 @@ func ReportSingleApp(appName, infoFlag string) error { "--buildpacks-list": reportList, } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("buildpacks", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func reportList(appName string) string { diff --git a/plugins/common/common.go b/plugins/common/common.go index 6472b7d9e..7ec38493b 100644 --- a/plugins/common/common.go +++ b/plugins/common/common.go @@ -7,7 +7,6 @@ import ( "io/ioutil" "os" "path/filepath" - "reflect" "regexp" "sort" "strconv" @@ -324,7 +323,7 @@ func ParseReportArgs(pluginName string, arguments []string) ([]string, string, e } // 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) error { +func ReportSingleApp(reportType string, appName string, infoFlag string, infoFlags map[string]string, infoFlagKeys []string, trimPrefix bool, uppercaseFirstCharacter bool) error { flags := []string{} for key := range infoFlags { flags = append(flags, key) @@ -334,7 +333,11 @@ func ReportSingleApp(reportType string, appName string, infoFlag string, infoFla if len(infoFlag) == 0 { LogInfo2Quiet(fmt.Sprintf("%s %v information", appName, reportType)) for _, k := range flags { - v := infoFlags[k] + v, ok := infoFlags[k] + if !ok { + continue + } + prefix := "--" if trimPrefix { prefix = fmt.Sprintf("--%v-", reportType) @@ -353,19 +356,17 @@ func ReportSingleApp(reportType string, appName string, infoFlag string, infoFla for _, k := range flags { if infoFlag == k { - v := infoFlags[k] + v, ok := infoFlags[k] + if !ok { + continue + } fmt.Println(v) return nil } } - keys := reflect.ValueOf(infoFlags).MapKeys() - strkeys := make([]string, len(keys)) - for i := 0; i < len(keys); i++ { - strkeys[i] = keys[i].String() - } - - return fmt.Errorf("Invalid flag passed, valid flags: %s", strings.Join(strkeys, ", ")) + sort.Strings(infoFlagKeys) + return fmt.Errorf("Invalid flag passed, valid flags: %s", strings.Join(infoFlagKeys, ", ")) } // RightPad right-pads the string with pad up to len runes diff --git a/plugins/logs/report.go b/plugins/logs/report.go index 1234e6e55..3e8a95aa9 100644 --- a/plugins/logs/report.go +++ b/plugins/logs/report.go @@ -15,10 +15,15 @@ func ReportSingleApp(appName, infoFlag string) error { "--logs-global-vector-sink": reportGlobalVectorSink, } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("logs", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("logs", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func reportVectorSink(appName string) string { diff --git a/plugins/network/report.go b/plugins/network/report.go index ff9fcfdda..a1cc197b4 100644 --- a/plugins/network/report.go +++ b/plugins/network/report.go @@ -19,10 +19,15 @@ func ReportSingleApp(appName, infoFlag string) error { "--network-web-listeners": reportWebListeners, } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("network", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("network", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func reportBindAllInterfaces(appName string) string { diff --git a/plugins/proxy/report.go b/plugins/proxy/report.go index f32365ab1..01f181307 100644 --- a/plugins/proxy/report.go +++ b/plugins/proxy/report.go @@ -18,10 +18,15 @@ func ReportSingleApp(appName string, infoFlag string) error { "--proxy-port-map": reportPortMap, } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("proxy", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("proxy", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func reportEnabled(appName string) string { diff --git a/plugins/ps/report.go b/plugins/ps/report.go index 838eaee49..46656697c 100644 --- a/plugins/ps/report.go +++ b/plugins/ps/report.go @@ -28,10 +28,15 @@ func ReportSingleApp(appName, infoFlag string) error { flags[flag] = fn } + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) + } + trimPrefix := false uppercaseFirstCharacter := true infoFlags := common.CollectReport(appName, infoFlag, flags) - return common.ReportSingleApp("ps", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("ps", appName, infoFlag, infoFlags, flagKeys, trimPrefix, uppercaseFirstCharacter) } func addStatusFlags(appName string, infoFlag string) map[string]common.ReportFunc { diff --git a/plugins/resource/resource.go b/plugins/resource/resource.go index 7d0ea4c4c..7f09e973f 100644 --- a/plugins/resource/resource.go +++ b/plugins/resource/resource.go @@ -28,15 +28,20 @@ func ReportSingleApp(appName, infoFlag string) error { return nil } - infoFlags := map[string]string{} + flags := map[string]string{} for key, value := range resources { flag := fmt.Sprintf("--resource-%v", key) - infoFlags[flag] = value + flags[flag] = value + } + + flagKeys := []string{} + for flagKey := range flags { + flagKeys = append(flagKeys, flagKey) } trimPrefix := true uppercaseFirstCharacter := false - return common.ReportSingleApp("resource", appName, infoFlag, infoFlags, trimPrefix, uppercaseFirstCharacter) + return common.ReportSingleApp("resource", appName, infoFlag, flags, flagKeys, trimPrefix, uppercaseFirstCharacter) } // GetResourceValue fetches a single value for a given app/process/request/key combination