Use tabwriter with remembered column widths

pull/564/head
Jordan Liggitt 2018-12-28 23:10:28 -05:00
parent 096186afb5
commit 2b1a2d361f
11 changed files with 30 additions and 19 deletions

View File

@ -41,6 +41,7 @@ go_library(
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd/api/latest:go_default_library",
"//vendor/github.com/liggitt/tabwriter:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
],
)

View File

@ -21,8 +21,8 @@ import (
"io"
"sort"
"strings"
"text/tabwriter"
"github.com/liggitt/tabwriter"
"github.com/spf13/cobra"
utilerrors "k8s.io/apimachinery/pkg/util/errors"

View File

@ -55,6 +55,7 @@ go_library(
"//staging/src/k8s.io/client-go/tools/watch:go_default_library",
"//staging/src/k8s.io/client-go/util/integer:go_default_library",
"//staging/src/k8s.io/client-go/util/jsonpath:go_default_library",
"//vendor/github.com/liggitt/tabwriter:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/vbom.ml/util/sortorder:go_default_library",

View File

@ -24,7 +24,8 @@ import (
"reflect"
"regexp"
"strings"
"text/tabwriter"
"github.com/liggitt/tabwriter"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"

View File

@ -537,6 +537,7 @@ func (o *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
if shouldGetNewPrinterForMapping(printer, lastMapping, mapping) {
w.Flush()
w.SetRememberedWidths(nil)
// TODO: this doesn't belong here
// add linebreak between resource groups (if there is more than one)
@ -654,10 +655,11 @@ func (o *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []string)
}
}
writer := utilprinters.GetNewTabWriter(o.Out)
// print the current object
if !o.WatchOnly {
var objsToPrint []runtime.Object
writer := utilprinters.GetNewTabWriter(o.Out)
if isList {
objsToPrint, _ = meta.ExtractList(obj)
@ -702,9 +704,10 @@ func (o *GetOptions) watch(f cmdutil.Factory, cmd *cobra.Command, args []string)
internalGV := mapping.GroupVersionKind.GroupKind().WithVersion(runtime.APIVersionInternal).GroupVersion()
objToPrint = attemptToConvertToInternal(e.Object, legacyscheme.Scheme, internalGV)
}
if err := printer.PrintObj(objToPrint, o.Out); err != nil {
if err := printer.PrintObj(objToPrint, writer); err != nil {
return false, err
}
writer.Flush()
return false, nil
})
return err

View File

@ -1211,8 +1211,8 @@ func TestWatchLabelSelector(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
bar 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)
@ -1262,8 +1262,8 @@ func TestWatchFieldSelector(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
bar 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)
@ -1305,8 +1305,8 @@ func TestWatchResource(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)
@ -1349,8 +1349,8 @@ func TestWatchResourceIdentifiedByFile(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)
@ -1392,7 +1392,7 @@ func TestWatchOnlyResource(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)
@ -1437,7 +1437,7 @@ func TestWatchOnlyList(t *testing.T) {
expected := `NAME READY STATUS RESTARTS AGE
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
foo 0/0 0 <unknown>
`
if e, a := expected, buf.String(); e != a {
t.Errorf("expected\n%v\ngot\n%v", e, a)

View File

@ -5,6 +5,7 @@ go_library(
srcs = ["tabwriter.go"],
importpath = "k8s.io/kubernetes/pkg/kubectl/util/printers",
visibility = ["//visibility:public"],
deps = ["//vendor/github.com/liggitt/tabwriter:go_default_library"],
)
filegroup(

View File

@ -18,7 +18,8 @@ package printers
import (
"io"
"text/tabwriter"
"github.com/liggitt/tabwriter"
)
const (
@ -26,7 +27,7 @@ const (
tabwriterWidth = 4
tabwriterPadding = 3
tabwriterPadChar = ' '
tabwriterFlags = 0
tabwriterFlags = tabwriter.RememberWidths
)
// GetNewTabWriter returns a tabwriter that translates tabbed columns in input into properly aligned text.

View File

@ -23,6 +23,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/github.com/liggitt/tabwriter:go_default_library",
],
)

View File

@ -22,7 +22,8 @@ import (
"io"
"reflect"
"strings"
"text/tabwriter"
"github.com/liggitt/tabwriter"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

View File

@ -18,7 +18,8 @@ package printers
import (
"io"
"text/tabwriter"
"github.com/liggitt/tabwriter"
)
const (
@ -26,7 +27,7 @@ const (
tabwriterWidth = 4
tabwriterPadding = 3
tabwriterPadChar = ' '
tabwriterFlags = 0
tabwriterFlags = tabwriter.RememberWidths
)
// GetNewTabWriter returns a tabwriter that translates tabbed columns in input into properly aligned text.