github.com/saucelabs/saucectl@v0.175.1/internal/cmd/apit/listfiles.go (about) 1 package apit 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/spf13/cobra" 8 "golang.org/x/text/cases" 9 "golang.org/x/text/language" 10 11 cmds "github.com/saucelabs/saucectl/internal/cmd" 12 "github.com/saucelabs/saucectl/internal/http" 13 "github.com/saucelabs/saucectl/internal/segment" 14 "github.com/saucelabs/saucectl/internal/usage" 15 ) 16 17 func ListFilesCommand() *cobra.Command { 18 cmd := &cobra.Command{ 19 Use: "list-files [--project PROJECT_NAME]", 20 Short: "List vault files", 21 Long: `Get a list of files from a project's vault. 22 23 Use [--project] to specify the project by its name or run without [--project] to choose from a list of projects. 24 `, 25 SilenceUsage: true, 26 PreRunE: func(cmd *cobra.Command, args []string) error { 27 err := http.CheckProxy() 28 if err != nil { 29 return fmt.Errorf("invalid HTTP_PROXY value") 30 } 31 32 tracker := segment.DefaultTracker 33 34 go func() { 35 tracker.Collect( 36 cases.Title(language.English).String(cmds.FullName(cmd)), 37 usage.Properties{}.SetFlags(cmd.Flags()), 38 ) 39 _ = tracker.Close() 40 }() 41 return nil 42 }, 43 RunE: func(cmd *cobra.Command, args []string) error { 44 files, err := apitesterClient.ListVaultFiles(context.Background(), selectedProject.ID) 45 if err != nil { 46 return err 47 } 48 49 for _, file := range files { 50 fmt.Printf("%s\n", file.Name) 51 } 52 return nil 53 }, 54 } 55 return cmd 56 }