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