github.com/kubeshop/testkube@v1.17.23/cmd/kubectl-testkube/commands/testsources/get.go (about) 1 package testsources 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 "github.com/spf13/cobra" 9 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/testsources/renderer" 13 "github.com/kubeshop/testkube/pkg/crd" 14 "github.com/kubeshop/testkube/pkg/ui" 15 ) 16 17 func NewGetTestSourceCmd() *cobra.Command { 18 var name string 19 var selectors []string 20 var crdOnly bool 21 22 cmd := &cobra.Command{ 23 Use: "testsource <testSourceName>", 24 Aliases: []string{"testsources", "tsc"}, 25 Short: "Get test source details", 26 Long: `Get test source, you can change output format, to get single details pass name as first arg`, 27 Run: func(cmd *cobra.Command, args []string) { 28 client, _, err := common.GetClient(cmd) 29 ui.ExitOnError("getting client", err) 30 31 firstEntry := true 32 if len(args) > 0 { 33 name := args[0] 34 testSource, err := client.GetTestSource(name) 35 ui.ExitOnError("getting test source: "+name, err) 36 37 if crdOnly { 38 if testSource.Data != "" { 39 testSource.Data = fmt.Sprintf("%q", testSource.Data) 40 } 41 42 common.UIPrintCRD(crd.TemplateTestSource, testSource, &firstEntry) 43 return 44 } 45 46 err = render.Obj(cmd, testSource, os.Stdout, renderer.TestSourceRenderer) 47 ui.ExitOnError("rendering obj", err) 48 } else { 49 testSources, err := client.ListTestSources(strings.Join(selectors, ",")) 50 ui.ExitOnError("getting test sources", err) 51 52 if crdOnly { 53 for _, testSource := range testSources { 54 if testSource.Data != "" { 55 testSource.Data = fmt.Sprintf("%q", testSource.Data) 56 } 57 58 common.UIPrintCRD(crd.TemplateTestSource, testSource, &firstEntry) 59 } 60 61 return 62 } 63 64 err = render.List(cmd, testSources, os.Stdout) 65 ui.ExitOnError("rendering list", err) 66 } 67 }, 68 } 69 70 cmd.Flags().StringVarP(&name, "name", "n", "", "unique test source name, you can also pass it as argument") 71 cmd.Flags().StringSliceVarP(&selectors, "label", "l", nil, "label key value pair: --label key1=value1") 72 cmd.Flags().BoolVar(&crdOnly, "crd-only", false, "show only test crd") 73 74 return cmd 75 }