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

     1  package tests
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/spf13/cobra"
     7  
     8  	"github.com/kubeshop/testkube/cmd/kubectl-testkube/commands/common"
     9  	"github.com/kubeshop/testkube/pkg/ui"
    10  )
    11  
    12  func NewDeleteTestsCmd() *cobra.Command {
    13  	var deleteAll bool
    14  	var selectors []string
    15  
    16  	cmd := &cobra.Command{
    17  		Use:     "test [testName]",
    18  		Aliases: []string{"t", "tests"},
    19  		Short:   "Delete Test",
    20  		Run: func(cmd *cobra.Command, args []string) {
    21  
    22  			client, _, err := common.GetClient(cmd)
    23  			ui.ExitOnError("getting client", err)
    24  
    25  			namespace := cmd.Flag("namespace").Value.String()
    26  			if deleteAll {
    27  				err := client.DeleteTests("")
    28  				ui.ExitOnError("delete all tests from namespace "+namespace, err)
    29  				ui.SuccessAndExit("Succesfully deleted all tests in namespace", namespace)
    30  			}
    31  
    32  			if len(args) > 0 {
    33  				name := args[0]
    34  				err := client.DeleteTest(name)
    35  				ui.ExitOnError("delete test "+name+" from namespace "+namespace, err)
    36  				ui.SuccessAndExit("Succesfully deleted test", name)
    37  			}
    38  
    39  			if len(selectors) != 0 {
    40  				selector := strings.Join(selectors, ",")
    41  				err := client.DeleteTests(selector)
    42  				ui.ExitOnError("deleting tests by labels: "+selector, err)
    43  				ui.SuccessAndExit("Succesfully deleted tests by labels", selector)
    44  			}
    45  
    46  			ui.Failf("Pass Test name, --all flag to delete all or labels to delete by labels")
    47  		},
    48  	}
    49  
    50  	cmd.Flags().BoolVar(&deleteAll, "all", false, "Delete all tests")
    51  	cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1")
    52  
    53  	return cmd
    54  }