github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/common/render/obj.go (about) 1 package render 2 3 import ( 4 "io" 5 6 "github.com/spf13/cobra" 7 8 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common" 9 "github.com/kubeshop/testkube/pkg/ui" 10 ) 11 12 func Obj(cmd *cobra.Command, obj interface{}, w io.Writer, renderer ...CliObjRenderer) error { 13 outputFlag := cmd.Flag("output") 14 outputType := OutputPretty 15 if outputFlag != nil { 16 outputType = OutputType(outputFlag.Value.String()) 17 } 18 19 switch outputType { 20 case OutputPretty: 21 if len(renderer) > 0 { // if custom renderer is set render using custom pretty renderer 22 client, _, err := common.GetClient(cmd) 23 if err != nil { 24 return err 25 } 26 27 return renderer[0](client, ui.NewUI(ui.Verbose, w), obj) 28 } 29 return RenderYaml(obj, w) // fallback to yaml 30 case OutputYAML: 31 return RenderYaml(obj, w) 32 case OutputJSON: 33 return RenderJSON(obj, w) 34 case OutputGoTemplate: 35 tpl := cmd.Flag("go-template").Value.String() 36 return RenderGoTemplate(obj, w, tpl) 37 default: 38 return RenderYaml(obj, w) 39 } 40 41 }