addPersistentFlags adds all the persistent flags to the root command
(cmd *cobra.Command)
| 143 | |
| 144 | // addPersistentFlags adds all the persistent flags to the root command |
| 145 | func addPersistentFlags(cmd *cobra.Command) { |
| 146 | // Bootstrap flags |
| 147 | cmd.PersistentFlags().StringP("config", "c", "", "Path to YAML config file") |
| 148 | cmd.PersistentFlags().StringP("profile", "p", "", "Connection profile to use (overrides default_profile)") |
| 149 | cmd.PersistentFlags().BoolP("no-cache", "n", false, "Disable caching") |
| 150 | cmd.PersistentFlags().BoolP("version", "v", false, "Show version information") |
| 151 | cmd.PersistentFlags().BoolP("config-wizard", "w", false, "Launch interactive config wizard and exit") |
| 152 | cmd.PersistentFlags().Bool("list-profiles", false, "List available connection profiles/groups and exit") |
| 153 | |
| 154 | // Config flags |
| 155 | cmd.PersistentFlags().String("addr", "", "Proxmox API URL") |
| 156 | cmd.PersistentFlags().String("user", "", "Proxmox username") |
| 157 | cmd.PersistentFlags().String("password", "", "Proxmox password") |
| 158 | cmd.PersistentFlags().String("token-id", "", "Proxmox API token ID") |
| 159 | cmd.PersistentFlags().String("token-secret", "", "Proxmox API token secret") |
| 160 | cmd.PersistentFlags().String("realm", "", "Proxmox realm") |
| 161 | cmd.PersistentFlags().Bool("insecure", false, "Skip TLS verification") |
| 162 | cmd.PersistentFlags().String("api-path", "", "Proxmox API path") |
| 163 | cmd.PersistentFlags().String("ssh-user", "", "SSH username") |
| 164 | cmd.PersistentFlags().String("vm-ssh-user", "", "QEMU VM SSH username (defaults to ssh-user)") |
| 165 | cmd.PersistentFlags().String("ssh-keyfile", "", "SSH private key file path") |
| 166 | cmd.PersistentFlags().String("vm-ssh-keyfile", "", "SSH private key file path for QEMU VM connections (defaults to ssh-keyfile)") |
| 167 | cmd.PersistentFlags().String("ssh-jumphost-addr", "", "SSH jump host address") |
| 168 | cmd.PersistentFlags().String("ssh-jumphost-user", "", "SSH jump host user") |
| 169 | cmd.PersistentFlags().String("ssh-jumphost-keyfile", "", "SSH jump host identity file") |
| 170 | cmd.PersistentFlags().Int("ssh-jumphost-port", 0, "SSH jump host port") |
| 171 | cmd.PersistentFlags().Bool("debug", false, "Enable debug logging") |
| 172 | cmd.PersistentFlags().String("cache-dir", "", "Cache directory path") |
| 173 | cmd.PersistentFlags().String("age-dir", "", "Age key directory path") |
| 174 | cmd.PersistentFlags().Bool("show-icons", true, "Show icons/emojis in UI (env: PVETUI_SHOW_ICONS)") |
| 175 | |
| 176 | // Bind flags to environment variables |
| 177 | viper.SetEnvPrefix("PVETUI") |
| 178 | viper.AutomaticEnv() |
| 179 | |
| 180 | // Bind each flag to its corresponding environment variable |
| 181 | if err := viper.BindPFlag("addr", cmd.PersistentFlags().Lookup("addr")); err != nil { |
| 182 | panic(fmt.Sprintf("failed to bind addr flag: %v", err)) |
| 183 | } |
| 184 | if err := viper.BindPFlag("user", cmd.PersistentFlags().Lookup("user")); err != nil { |
| 185 | panic(fmt.Sprintf("failed to bind user flag: %v", err)) |
| 186 | } |
| 187 | if err := viper.BindPFlag("password", cmd.PersistentFlags().Lookup("password")); err != nil { |
| 188 | panic(fmt.Sprintf("failed to bind password flag: %v", err)) |
| 189 | } |
| 190 | if err := viper.BindPFlag("token_id", cmd.PersistentFlags().Lookup("token-id")); err != nil { |
| 191 | panic(fmt.Sprintf("failed to bind token_id flag: %v", err)) |
| 192 | } |
| 193 | if err := viper.BindPFlag("token_secret", cmd.PersistentFlags().Lookup("token-secret")); err != nil { |
| 194 | panic(fmt.Sprintf("failed to bind token_secret flag: %v", err)) |
| 195 | } |
| 196 | if err := viper.BindPFlag("realm", cmd.PersistentFlags().Lookup("realm")); err != nil { |
| 197 | panic(fmt.Sprintf("failed to bind realm flag: %v", err)) |
| 198 | } |
| 199 | if err := viper.BindPFlag("insecure", cmd.PersistentFlags().Lookup("insecure")); err != nil { |
| 200 | panic(fmt.Sprintf("failed to bind insecure flag: %v", err)) |
| 201 | } |
| 202 | if err := viper.BindPFlag("api_path", cmd.PersistentFlags().Lookup("api-path")); err != nil { |