mirror of https://github.com/k3s-io/k3s.git
commit
641f72096f
|
@ -57,13 +57,14 @@ Examples:
|
|||
outputFormat := getFlagString(cmd, "output")
|
||||
templateFile := getFlagString(cmd, "template")
|
||||
selector := getFlagString(cmd, "selector")
|
||||
err := kubectl.Get(out, getKubeClient(cmd).RESTClient, resource, id, selector, outputFormat, templateFile)
|
||||
err := kubectl.Get(out, getKubeClient(cmd).RESTClient, resource, id, selector, outputFormat, getFlagBool(cmd, "no-headers"), templateFile)
|
||||
checkErr(err)
|
||||
},
|
||||
}
|
||||
// TODO Add an --output-version lock which can ensure that regardless of the
|
||||
// server version, the client output stays the same.
|
||||
cmd.Flags().StringP("output", "o", "console", "Output format: console|json|yaml|template")
|
||||
cmd.Flags().Bool("no-headers", false, "When output format is console, don't print headers")
|
||||
cmd.Flags().StringP("template", "t", "", "Path to template file to use when --output=template")
|
||||
cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on")
|
||||
return cmd
|
||||
|
|
|
@ -23,7 +23,7 @@ import (
|
|||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
||||
)
|
||||
|
||||
func Get(w io.Writer, c *client.RESTClient, resource, id, selector, format, templateFile string) error {
|
||||
func Get(w io.Writer, c *client.RESTClient, resource string, id string, selector string, format string, noHeaders bool, templateFile string) error {
|
||||
path, err := resolveResource(resolveToPath, resource)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -42,7 +42,7 @@ func Get(w io.Writer, c *client.RESTClient, resource, id, selector, format, temp
|
|||
return err
|
||||
}
|
||||
|
||||
printer, err := getPrinter(format, templateFile)
|
||||
printer, err := getPrinter(format, templateFile, noHeaders)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ import (
|
|||
"gopkg.in/v1/yaml"
|
||||
)
|
||||
|
||||
func getPrinter(format, templateFile string) (ResourcePrinter, error) {
|
||||
func getPrinter(format, templateFile string, noHeaders bool) (ResourcePrinter, error) {
|
||||
var printer ResourcePrinter
|
||||
switch format {
|
||||
case "json":
|
||||
|
@ -60,7 +60,7 @@ func getPrinter(format, templateFile string) (ResourcePrinter, error) {
|
|||
Template: tmpl,
|
||||
}
|
||||
default:
|
||||
printer = NewHumanReadablePrinter()
|
||||
printer = NewHumanReadablePrinter(noHeaders)
|
||||
}
|
||||
return printer, nil
|
||||
}
|
||||
|
@ -105,11 +105,15 @@ type handlerEntry struct {
|
|||
// HumanReadablePrinter is an implementation of ResourcePrinter which attempts to provide more elegant output.
|
||||
type HumanReadablePrinter struct {
|
||||
handlerMap map[reflect.Type]*handlerEntry
|
||||
noHeaders bool
|
||||
}
|
||||
|
||||
// NewHumanReadablePrinter creates a HumanReadablePrinter.
|
||||
func NewHumanReadablePrinter() *HumanReadablePrinter {
|
||||
printer := &HumanReadablePrinter{make(map[reflect.Type]*handlerEntry)}
|
||||
func NewHumanReadablePrinter(noHeaders bool) *HumanReadablePrinter {
|
||||
printer := &HumanReadablePrinter{
|
||||
handlerMap: make(map[reflect.Type]*handlerEntry),
|
||||
noHeaders: noHeaders,
|
||||
}
|
||||
printer.addDefaultHandlers()
|
||||
return printer
|
||||
}
|
||||
|
@ -260,7 +264,9 @@ func (h *HumanReadablePrinter) PrintObj(obj runtime.Object, output io.Writer) er
|
|||
w := tabwriter.NewWriter(output, 20, 5, 3, ' ', 0)
|
||||
defer w.Flush()
|
||||
if handler := h.handlerMap[reflect.TypeOf(obj)]; handler != nil {
|
||||
h.printHeader(handler.columns, w)
|
||||
if !h.noHeaders {
|
||||
h.printHeader(handler.columns, w)
|
||||
}
|
||||
args := []reflect.Value{reflect.ValueOf(obj), reflect.ValueOf(w)}
|
||||
resultValue := handler.printFunc.Call(args)[0]
|
||||
if resultValue.IsNil() {
|
||||
|
|
|
@ -104,7 +104,7 @@ func ErrorPrintHandler(obj *TestPrintType, w io.Writer) error {
|
|||
|
||||
func TestCustomTypePrinting(t *testing.T) {
|
||||
columns := []string{"Data"}
|
||||
printer := NewHumanReadablePrinter()
|
||||
printer := NewHumanReadablePrinter(false)
|
||||
printer.Handler(columns, PrintCustomType)
|
||||
|
||||
obj := TestPrintType{"test object"}
|
||||
|
@ -121,7 +121,7 @@ func TestCustomTypePrinting(t *testing.T) {
|
|||
|
||||
func TestPrintHandlerError(t *testing.T) {
|
||||
columns := []string{"Data"}
|
||||
printer := NewHumanReadablePrinter()
|
||||
printer := NewHumanReadablePrinter(false)
|
||||
printer.Handler(columns, ErrorPrintHandler)
|
||||
obj := TestPrintType{"test object"}
|
||||
buffer := &bytes.Buffer{}
|
||||
|
@ -132,7 +132,7 @@ func TestPrintHandlerError(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestUnknownTypePrinting(t *testing.T) {
|
||||
printer := NewHumanReadablePrinter()
|
||||
printer := NewHumanReadablePrinter(false)
|
||||
buffer := &bytes.Buffer{}
|
||||
err := printer.PrintObj(&TestUnknownType{}, buffer)
|
||||
if err == nil {
|
||||
|
|
Loading…
Reference in New Issue