mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Keep Flatten() and format output earlier in kubectl get
This commit is contained in:
		@@ -19,8 +19,10 @@ package cmd
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"text/tabwriter"
 | 
			
		||||
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubectl"
 | 
			
		||||
	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
 | 
			
		||||
	"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
 | 
			
		||||
	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 {
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			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 {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			lastMapping = r.Mapping
 | 
			
		||||
		}
 | 
			
		||||
		if _, found := printer.(*kubectl.HumanReadablePrinter); found {
 | 
			
		||||
			return printer.PrintObj(r.Object, w)
 | 
			
		||||
		}
 | 
			
		||||
		return printer.PrintObj(r.Object, out)
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -46,11 +46,11 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	tabwriterMinWidth = 10
 | 
			
		||||
	tabwriterWidth    = 4
 | 
			
		||||
	tabwriterPadding  = 3
 | 
			
		||||
	tabwriterPadChar  = ' '
 | 
			
		||||
	tabwriterFlags    = 0
 | 
			
		||||
	TabwriterMinWidth = 10
 | 
			
		||||
	TabwriterWidth    = 4
 | 
			
		||||
	TabwriterPadding  = 3
 | 
			
		||||
	TabwriterPadChar  = ' '
 | 
			
		||||
	TabwriterFlags    = 0
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// 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.
 | 
			
		||||
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()
 | 
			
		||||
	}
 | 
			
		||||
	t := reflect.TypeOf(obj)
 | 
			
		||||
	if handler := h.handlerMap[t]; handler != nil {
 | 
			
		||||
		if !h.noHeaders && t != h.lastType {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user