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  }