From 768086e987e7d7ea230773fc393d190f67ade59c Mon Sep 17 00:00:00 2001 From: Nima Kaviani Date: Sun, 10 Nov 2019 17:54:44 +0100 Subject: [PATCH] fix latest issues - use ascii for the tree lines. Fixes #6 - verbose mode to show resource ApiGroups #7 - put main.go in the kni package. Fixes #3 --- .gitignore | 1 + cmd/{ => kni}/main.go | 0 pkg/cmd/inspect.go | 8 +++++--- pkg/cmd/ui/tree_view.go | 35 ++++++++++++++++++++--------------- pkg/cmd/version.go | 2 +- 5 files changed, 27 insertions(+), 19 deletions(-) rename cmd/{ => kni}/main.go (100%) diff --git a/.gitignore b/.gitignore index e0c6990..42cb3bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ go.sum kni* +!cmd/kni diff --git a/cmd/main.go b/cmd/kni/main.go similarity index 100% rename from cmd/main.go rename to cmd/kni/main.go diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go index fdee11c..8f09c2d 100644 --- a/pkg/cmd/inspect.go +++ b/pkg/cmd/inspect.go @@ -15,8 +15,9 @@ import ( type InspectCmdOptions struct { ui ui.UI - Debug bool - opts insp.InspectorOptions + Debug bool + Verbose bool + opts insp.InspectorOptions kubeconfigFlags flags.KubeconfigFlags namespaceFlags flags.NamespaceFlags @@ -34,6 +35,7 @@ func NewInspectCmd(o *InspectCmdOptions) *cobra.Command { RunE: func(_ *cobra.Command, _ []string) error { return o.Run() }, } cmd.Flags().BoolVar(&o.Debug, "debug", false, "Enable debug output") + cmd.Flags().BoolVarP(&o.Verbose, "verbose", "v", false, "Show verbose output") cmd.Flags().StringSliceVarP(&o.opts.Services, "service", "s", []string{}, "Knative services to inspect (can be specified multiple times)") o.kubeconfigFlags.Set(cmd) @@ -62,6 +64,6 @@ func (o *InspectCmdOptions) inspect() error { return err } - kiui.TreeView{Source: strings.Join(o.opts.Services, ","), ResourceMap: result}.Print(o.ui) + kiui.TreeView{Source: strings.Join(o.opts.Services, ","), ResourceMap: result, Verbose: o.Verbose}.Print(o.ui) return nil } diff --git a/pkg/cmd/ui/tree_view.go b/pkg/cmd/ui/tree_view.go index e2510c3..0628d15 100644 --- a/pkg/cmd/ui/tree_view.go +++ b/pkg/cmd/ui/tree_view.go @@ -4,6 +4,7 @@ import ( "fmt" "io" "sort" + "strings" "github.com/cppforlife/go-cli-ui/ui" @@ -17,6 +18,7 @@ type TreeView struct { Source string ResourceMap [][]krsc.Resource Sort bool + Verbose bool } func (v TreeView) Print(ui ui.UI) { @@ -24,7 +26,7 @@ func (v TreeView) Print(ui ui.UI) { groupHeader.Hidden = true versionHeader := uitable.NewHeader("Version") - versionHeader.Hidden = true + versionHeader.Hidden = !v.Verbose table := uitable.Table{ Title: fmt.Sprintf("Resources in %s", v.Source), @@ -34,8 +36,8 @@ func (v TreeView) Print(ui ui.UI) { groupHeader, uitable.NewHeader("Namespace"), uitable.NewHeader("Name"), - uitable.NewHeader("Kind"), versionHeader, + uitable.NewHeader("Kind"), uitable.NewHeader("Ready"), uitable.NewHeader("Reason"), }, @@ -148,6 +150,7 @@ func (v TreeView) addBlankRow(table *uitable.Table) { uitable.NewValueString(" "), uitable.NewValueString(" "), uitable.NewValueString(" "), + uitable.NewValueString(" "), } table.Rows = append(table.Rows, row) } @@ -172,24 +175,26 @@ func (v TreeView) addRows(table *uitable.Table, rt resourceTree, depth int, conn var delim string if depth > 0 { - delim = fmt.Sprintf("%sL ", connector) + delim = fmt.Sprintf("%sL", connector) + if !hasSibling { + delim += "_" + } + delim += " " } - delim = strings.ReplaceAll(delim, "|L", "L") - row := []uitable.Value{ uitable.NewValueString(""), uitable.NewValueString(resource.Namespace()), uitable.NewValueString(resource.Name()), - ValueColored{ + uitable.NewValueString(resource.APIVersion()), + ValueEncoded{ S: delim + resource.Kind(), Func: func(str string, opts ...interface{}) string { result := fmt.Sprintf(str, opts...) - return strings.Replace(result, delim, color.New(color.Faint).Sprintf("%s", delim), -1) + return strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll(result, "|L", "├─"), "|", "│"), "L_", "└─") }, }, - uitable.NewValueString(resource.APIVersion()), - ValueColored{ + ValueEncoded{ S: msg, Func: func(str string, opts ...interface{}) string { result := fmt.Sprintf(str, opts...) @@ -202,7 +207,7 @@ func (v TreeView) addRows(table *uitable.Table, rt resourceTree, depth int, conn return result }, }, - ValueColored{ + ValueEncoded{ S: reason, Func: func(str string, opts ...interface{}) string { result := fmt.Sprintf(str, opts...) @@ -227,15 +232,15 @@ func (v TreeView) addRows(table *uitable.Table, rt resourceTree, depth int, conn } } -type ValueColored struct { +type ValueEncoded struct { S string Func func(string, ...interface{}) string } -func (t ValueColored) String() string { return t.S } -func (t ValueColored) Value() uitable.Value { return t } -func (t ValueColored) Compare(other uitable.Value) int { panic("Never called") } +func (t ValueEncoded) String() string { return t.S } +func (t ValueEncoded) Value() uitable.Value { return t } +func (t ValueEncoded) Compare(other uitable.Value) int { panic("Never called") } -func (t ValueColored) Fprintf(w io.Writer, pattern string, rest ...interface{}) (int, error) { +func (t ValueEncoded) Fprintf(w io.Writer, pattern string, rest ...interface{}) (int, error) { return fmt.Fprintf(w, "%s", t.Func(pattern, rest...)) } diff --git a/pkg/cmd/version.go b/pkg/cmd/version.go index d02fca3..24d1809 100644 --- a/pkg/cmd/version.go +++ b/pkg/cmd/version.go @@ -8,7 +8,7 @@ import ( ) const ( - Version = "0.1.0" + Version = "0.2.0" ) type VersionOptions struct {