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 }