mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 19:23:40 +00:00
Keep Flatten() and format output earlier in kubectl get
This commit is contained in:
parent
3e3833b0db
commit
f39fe2056d
@ -19,8 +19,10 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"text/tabwriter"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
|
"k8s.io/kubernetes/pkg/api/meta"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
@ -220,14 +222,24 @@ func RunGet(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string
|
|||||||
}
|
}
|
||||||
|
|
||||||
// use the default printer for each object
|
// use the default printer for each object
|
||||||
|
printer = nil
|
||||||
|
var lastMapping *meta.RESTMapping
|
||||||
|
w := tabwriter.NewWriter(out, kubectl.TabwriterMinWidth, kubectl.TabwriterWidth, kubectl.TabwriterPadding, kubectl.TabwriterPadChar, kubectl.TabwriterFlags)
|
||||||
|
defer w.Flush()
|
||||||
return b.Flatten().Do().Visit(func(r *resource.Info, err error) error {
|
return b.Flatten().Do().Visit(func(r *resource.Info, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
printer, err := f.PrinterForMapping(cmd, r.Mapping, allNamespaces)
|
if printer == nil || lastMapping == nil || r.Mapping == nil || r.Mapping.Resource != lastMapping.Resource {
|
||||||
|
printer, err = f.PrinterForMapping(cmd, r.Mapping, allNamespaces)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
lastMapping = r.Mapping
|
||||||
|
}
|
||||||
|
if _, found := printer.(*kubectl.HumanReadablePrinter); found {
|
||||||
|
return printer.PrintObj(r.Object, w)
|
||||||
|
}
|
||||||
return printer.PrintObj(r.Object, out)
|
return printer.PrintObj(r.Object, out)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -46,11 +46,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
tabwriterMinWidth = 10
|
TabwriterMinWidth = 10
|
||||||
tabwriterWidth = 4
|
TabwriterWidth = 4
|
||||||
tabwriterPadding = 3
|
TabwriterPadding = 3
|
||||||
tabwriterPadChar = ' '
|
TabwriterPadChar = ' '
|
||||||
tabwriterFlags = 0
|
TabwriterFlags = 0
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetPrinter takes a format type, an optional format argument. It will return true
|
// GetPrinter takes a format type, an optional format argument. It will return true
|
||||||
@ -1477,8 +1477,11 @@ func formatWideHeaders(wide bool, t reflect.Type) []string {
|
|||||||
|
|
||||||
// PrintObj prints the obj in a human-friendly format according to the type of the obj.
|
// PrintObj prints the obj in a human-friendly format according to the type of the obj.
|
||||||
func (h *HumanReadablePrinter) PrintObj(obj runtime.Object, output io.Writer) error {
|
func (h *HumanReadablePrinter) PrintObj(obj runtime.Object, output io.Writer) error {
|
||||||
w := tabwriter.NewWriter(output, tabwriterMinWidth, tabwriterWidth, tabwriterPadding, tabwriterPadChar, tabwriterFlags)
|
w, found := output.(*tabwriter.Writer)
|
||||||
|
if !found {
|
||||||
|
w = tabwriter.NewWriter(output, TabwriterMinWidth, TabwriterWidth, TabwriterPadding, TabwriterPadChar, TabwriterFlags)
|
||||||
defer w.Flush()
|
defer w.Flush()
|
||||||
|
}
|
||||||
t := reflect.TypeOf(obj)
|
t := reflect.TypeOf(obj)
|
||||||
if handler := h.handlerMap[t]; handler != nil {
|
if handler := h.handlerMap[t]; handler != nil {
|
||||||
if !h.noHeaders && t != h.lastType {
|
if !h.noHeaders && t != h.lastType {
|
||||||
|
Loading…
Reference in New Issue
Block a user