github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/testworkflows/get.go (about) 1 package testworkflows 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/testworkflows/renderer" 13 common2 "github.com/kubeshop/testkube/internal/common" 14 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 15 "github.com/kubeshop/testkube/pkg/tcl/mapperstcl/testworkflows" 16 "github.com/kubeshop/testkube/pkg/ui" 17 ) 18 19 func NewGetTestWorkflowsCmd() *cobra.Command { 20 var ( 21 selectors []string 22 crdOnly bool 23 ) 24 25 cmd := &cobra.Command{ 26 Use: "testworkflow [name]", 27 Aliases: []string{"testworkflows", "tw"}, 28 Args: cobra.MaximumNArgs(1), 29 Short: "Get all available test workflows", 30 Long: `Getting all available test workflows from given namespace - if no namespace given "testkube" namespace is used`, 31 32 Run: func(cmd *cobra.Command, args []string) { 33 namespace := cmd.Flag("namespace").Value.String() 34 client, _, err := common.GetClient(cmd) 35 ui.ExitOnError("getting client", err) 36 37 if len(args) == 0 { 38 workflows, err := client.ListTestWorkflowWithExecutions(strings.Join(selectors, ",")) 39 ui.ExitOnError("getting all test workflows in namespace "+namespace, err) 40 41 if crdOnly { 42 ui.PrintCRDs(common2.MapSlice(workflows, func(t testkube.TestWorkflowWithExecution) testworkflowsv1.TestWorkflow { 43 return *testworkflows.MapAPIToKube(t.Workflow) 44 }), "TestWorkflow", testworkflowsv1.GroupVersion) 45 } else { 46 err = render.List(cmd, workflows, os.Stdout) 47 ui.PrintOnError("Rendering list", err) 48 } 49 return 50 } 51 52 name := args[0] 53 workflow, err := client.GetTestWorkflowWithExecution(name) 54 ui.ExitOnError("getting test workflow in namespace "+namespace, err) 55 56 if crdOnly { 57 ui.PrintCRD(testworkflows.MapTestWorkflowAPIToKube(*workflow.Workflow), "TestWorkflow", testworkflowsv1.GroupVersion) 58 } else { 59 err = render.Obj(cmd, *workflow.Workflow, os.Stdout, renderer.TestWorkflowRenderer) 60 ui.ExitOnError("rendering obj", err) 61 62 if workflow.LatestExecution != nil { 63 ui.NL() 64 err = render.Obj(cmd, *workflow.LatestExecution, os.Stdout, renderer.TestWorkflowExecutionRenderer) 65 ui.ExitOnError("rendering obj", err) 66 } 67 } 68 }, 69 } 70 cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1") 71 cmd.Flags().BoolVar(&crdOnly, "crd-only", false, "show only test workflow crd") 72 73 return cmd 74 }