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

     1  package testworkflows
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common"
     9  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/render"
    10  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common/validator"
    11  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/testworkflows/renderer"
    12  	"github.com/kubeshop/testkube/pkg/ui"
    13  )
    14  
    15  func NewWatchTestWorkflowExecutionCmd() *cobra.Command {
    16  	cmd := &cobra.Command{
    17  		Use:     "testworkflowexecution <executionName>",
    18  		Aliases: []string{"testworkflowexecutions", "twe", "tw"},
    19  		Args:    validator.ExecutionName,
    20  		Short:   "Watch output from test workflow execution",
    21  		Long:    `Gets test workflow execution details, until it's in success/error state, blocks until gets complete state`,
    22  
    23  		Run: func(cmd *cobra.Command, args []string) {
    24  			client, _, err := common.GetClient(cmd)
    25  			ui.ExitOnError("getting client", err)
    26  
    27  			executionID := args[0]
    28  			execution, err := client.GetTestWorkflowExecution(executionID)
    29  			ui.ExitOnError("get execution failed", err)
    30  			err = render.Obj(cmd, execution, os.Stdout, renderer.TestWorkflowExecutionRenderer)
    31  			ui.ExitOnError("render test workflow execution", err)
    32  
    33  			ui.NL()
    34  			exitCode := uiWatch(execution, client)
    35  			ui.NL()
    36  
    37  			uiShellGetExecution(execution.Id)
    38  			os.Exit(exitCode)
    39  		},
    40  	}
    41  
    42  	return cmd
    43  }