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  }