github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/tests/executions.go (about) 1 package tests 2 3 import ( 4 "os" 5 "strings" 6 7 "github.com/spf13/cobra" 8 9 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common" 10 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/render" 11 "github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/tests/renderer" 12 "github.com/kubeshop/testkube/pkg/ui" 13 ) 14 15 func NewGetExecutionCmd() *cobra.Command { 16 var ( 17 selectors []string 18 testID string 19 limit int 20 logsOnly bool 21 ) 22 23 cmd := &cobra.Command{ 24 Use: "execution [executionID][executionName]", 25 Aliases: []string{"executions", "e"}, 26 Short: "Lists or gets test executions", 27 Long: `Getting list of execution for given test name or recent executions if there is no test name passed`, 28 Run: func(cmd *cobra.Command, args []string) { 29 client, _, err := common.GetClient(cmd) 30 ui.ExitOnError("getting client", err) 31 32 if len(args) == 1 { 33 executionID := args[0] 34 execution, err := client.GetExecution(executionID) 35 ui.ExitOnError("getting test execution: "+executionID, err) 36 37 if logsOnly { 38 if err = render.RenderExecutionResult(client, &execution, logsOnly, true); err != nil { 39 os.Exit(1) 40 } 41 } else { 42 err = render.Obj(cmd, execution, os.Stdout, renderer.ExecutionRenderer) 43 ui.ExitOnError("rendering execution", err) 44 } 45 } else { 46 executions, err := client.ListExecutions(testID, limit, strings.Join(selectors, ",")) 47 ui.ExitOnError("Getting executions for test: "+testID, err) 48 err = render.List(cmd, executions, os.Stdout) 49 ui.ExitOnError("rendering", err) 50 } 51 }, 52 } 53 54 cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1") 55 cmd.Flags().StringVarP(&testID, "test", "", "", "test id") 56 cmd.Flags().IntVarP(&limit, "limit", "", 10, "records limit") 57 cmd.Flags().BoolVar(&logsOnly, "logs-only", false, "show only execution logs") 58 59 return cmd 60 }