Refactor Get and Describe to allow extension of types

Get should use ResourceMapper, allow Printer to be abstracted,
and extract Describe as *Describer types.
This commit is contained in:
Clayton Coleman
2014-10-27 15:56:34 -04:00
parent 39882a3555
commit 09cfa364c5
18 changed files with 753 additions and 339 deletions

View File

@@ -34,7 +34,20 @@ import (
"gopkg.in/v1/yaml"
)
func getPrinter(format, templateFile string, noHeaders bool) (ResourcePrinter, error) {
// Print outputs a runtime.Object to an io.Writer in the given format
func Print(w io.Writer, obj runtime.Object, format string, templateFile string, defaultPrinter ResourcePrinter) error {
printer, err := getPrinter(format, templateFile, defaultPrinter)
if err != nil {
return err
}
if err := printer.PrintObj(obj, w); err != nil {
return fmt.Errorf("Failed to print: %v\nRaw received object:\n%#v", err, obj)
}
return nil
}
func getPrinter(format, templateFile string, defaultPrinter ResourcePrinter) (ResourcePrinter, error) {
var printer ResourcePrinter
switch format {
case "json":
@@ -60,7 +73,7 @@ func getPrinter(format, templateFile string, noHeaders bool) (ResourcePrinter, e
Template: tmpl,
}
default:
printer = NewHumanReadablePrinter(noHeaders)
printer = defaultPrinter
}
return printer, nil
}