| 37 | ) |
| 38 | |
| 39 | func newRootCmd() *cobra.Command { |
| 40 | root := &cobra.Command{ |
| 41 | Use: "hey", |
| 42 | Short: "CLI for HEY", |
| 43 | Long: `A CLI for HEY |
| 44 | ⠀⠀⠀⠀⠀⠀⣰⠲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |
| 45 | ⠀⠀⠀⡟⢳⡀⣏⠀⠘⣆⠀⠀⠀⠀⠀⣤⣤⡄⠀⠀⢠⣤⣤⣤⣤⣤⣤⣤⣤⠀⠀⢀⣤⣤⡄⠀ |
| 46 | ⠀⣴⢄⢳⠀⠹⣿⠀⠀⠸⣆⠴⠒⢢⡀⢻⣿⡇⠀⠀⢸⣿⣿⡟⠛⠛⠛⢿⣿⣇⠀⣼⣿⡟⠀⠀ |
| 47 | ⠀⢻⠈⠻⣧⠀⠹⣇⠀⢰⣿⠀⠀⠀⡇⢸⣿⣷⣶⣶⣾⣿⣿⣷⣶⣶⠀⠈⢿⣿⣼⣿⡟⠀⠀⠀ |
| 48 | ⣶⠺⣧⡀⠙⢧⠀⠉⠀⣸⢸⡆⠀⢸⠁⣼⣿⡏⠉⠉⢹⣿⣿⡏⠉⠉⠀⠀⠈⣿⣿⡟⠀⠀⠀⠀ |
| 49 | ⠘⣆⠈⠳⠀⠀⠀⠀⠀⢻⢸⠇⢀⡏⠀⣿⣿⡇⠀⠀⢸⣿⣿⣿⣶⣶⣶⡆⠀⣿⣿⡇⠀⠀⠀⠀ |
| 50 | ⠀⠈⠳⣄⡀⠀⠀⠀⠀⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |
| 51 | ⠀⠀⠀⠀⠉⠙⠚⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ |
| 52 | `, |
| 53 | SilenceUsage: true, |
| 54 | SilenceErrors: true, |
| 55 | PersistentPreRunE: func(cmd *cobra.Command, args []string) error { |
| 56 | format := output.FormatFromFlags(jsonFlag, quietFlag, idsOnly, countFlag, markdownF, styledFlag, agentFlag) |
| 57 | writer = output.New(output.Options{ |
| 58 | Format: format, |
| 59 | Stdout: cmd.OutOrStdout(), |
| 60 | Stderr: cmd.ErrOrStderr(), |
| 61 | }) |
| 62 | |
| 63 | var err error |
| 64 | cfg, err = config.Load() |
| 65 | if err != nil { |
| 66 | return err |
| 67 | } |
| 68 | if baseURL != "" { |
| 69 | if err := cfg.SetFromFlag("base_url", baseURL); err != nil { |
| 70 | return err |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | if os.Getenv("HEY_DEBUG") != "" && verboseFlag == 0 { |
| 75 | verboseFlag = 1 |
| 76 | } |
| 77 | |
| 78 | configDir := config.ConfigDir() |
| 79 | httpClient := &http.Client{Timeout: 30 * time.Second} |
| 80 | authMgr = auth.NewManager(cfg.BaseURL, httpClient, configDir) |
| 81 | initSDK(authMgr, cfg.BaseURL) |
| 82 | |
| 83 | migrateOldCredentials(configDir) |
| 84 | |
| 85 | return nil |
| 86 | }, |
| 87 | RunE: func(cmd *cobra.Command, args []string) error { |
| 88 | if !stdinIsTerminal() || !stdoutIsTerminal() { |
| 89 | return cmd.Help() |
| 90 | } |
| 91 | if err := requireAuth(); err != nil { |
| 92 | return err |
| 93 | } |
| 94 | return tui.Run(sdk) |
| 95 | }, |
| 96 | } |