github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/testworkflowtemplates/get.go (about)

     1  package testworkflowtemplates
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/spf13/cobra"
     8  
     9  	testworkflowsv1 "github.com/kubeshop/testkube-operator/api/testworkflows/v1"
    10  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common"
    11  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/render"
    12  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/testworkflowtemplates/renderer"
    13  	"github.com/kubeshop/testkube/pkg/tcl/mapperstcl/testworkflows"
    14  	"github.com/kubeshop/testkube/pkg/ui"
    15  )
    16  
    17  func NewGetTestWorkflowTemplatesCmd() *cobra.Command {
    18  	var (
    19  		selectors []string
    20  		crdOnly   bool
    21  	)
    22  
    23  	cmd := &cobra.Command{
    24  		Use:     "testworkflowtemplate [name]",
    25  		Aliases: []string{"testworkflowtemplates", "twt"},
    26  		Args:    cobra.MaximumNArgs(1),
    27  		Short:   "Get all available test workflow templates",
    28  		Long:    `Getting all available test workflow templates from given namespace - if no namespace given "testkube" namespace is used`,
    29  
    30  		Run: func(cmd *cobra.Command, args []string) {
    31  			namespace := cmd.Flag("namespace").Value.String()
    32  			client, _, err := common.GetClient(cmd)
    33  			ui.ExitOnError("getting client", err)
    34  
    35  			if len(args) == 0 {
    36  				templates, err := client.ListTestWorkflowTemplates(strings.Join(selectors, ","))
    37  				ui.ExitOnError("getting all test workflow templates in namespace "+namespace, err)
    38  
    39  				if crdOnly {
    40  					ui.PrintCRDs(testworkflows.MapTemplateListAPIToKube(templates).Items, "TestWorkflowTemplate", testworkflowsv1.GroupVersion)
    41  				} else {
    42  					err = render.List(cmd, templates, os.Stdout)
    43  					ui.PrintOnError("Rendering list", err)
    44  				}
    45  				return
    46  			}
    47  
    48  			name := args[0]
    49  			template, err := client.GetTestWorkflowTemplate(name)
    50  			ui.ExitOnError("getting test workflow in namespace "+namespace, err)
    51  
    52  			if crdOnly {
    53  				ui.PrintCRD(testworkflows.MapTestWorkflowTemplateAPIToKube(template), "TestWorkflowTemplate", testworkflowsv1.GroupVersion)
    54  			} else {
    55  				err = render.Obj(cmd, template, os.Stdout, renderer.TestWorkflowTemplateRenderer)
    56  				ui.ExitOnError("rendering obj", err)
    57  			}
    58  		},
    59  	}
    60  	cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1")
    61  	cmd.Flags().BoolVar(&crdOnly, "crd-only", false, "show only test workflow template crd")
    62  
    63  	return cmd
    64  }