Enhance wizard CLI with support for --prefer-saved flag to skip confirmation prompts and reuse saved configurations

This commit is contained in:
Ilya Groshev
2026-04-24 19:08:56 +03:00
parent f08e7a40c6
commit 7563087bef
2 changed files with 30 additions and 9 deletions
+13 -6
View File
@@ -24,7 +24,13 @@ cd server
go run ./cmd/wizard go run ./cmd/wizard
``` ```
Your choices are saved so next time you just press Enter to relaunch with the same settings. Your choices are saved so next time you just press Enter to relaunch with the same settings. To skip the confirmation prompt entirely (useful for scripts or quick relaunches), pass `--prefer-saved`:
```bash
go run ./cmd/wizard --prefer-saved
```
If no saved config exists, the flag prints an error and exits.
#### Custom Ports #### Custom Ports
@@ -34,11 +40,12 @@ By default the wizard uses ports 8003 (gRPC), 8080 (CDN), and 3000 (auth). Overr
go run ./cmd/wizard --grpc-port 9003 --cdn-port 9080 go run ./cmd/wizard --grpc-port 9003 --cdn-port 9080
``` ```
| Flag | Default | Description | | Flag | Default | Description |
| ------------- | ------- | ---------------- | | ---------------- | ------- | ---------------------------------- |
| `--grpc-port` | `8003` | gRPC server port | | `--prefer-saved` | `false` | Reuse saved config without prompting |
| `--cdn-port` | `8080` | CDN server port | | `--grpc-port` | `8003` | gRPC server port |
| `--auth-port` | `3000` | Auth server port | | `--cdn-port` | `8080` | CDN server port |
| `--auth-port` | `3000` | Auth server port |
Custom ports are saved to `.wizard.json` alongside your other settings. On the next run the saved ports are reused automatically — no need to pass the flags again. If you later pass different port flags, the wizard warns you that the ports changed and asks for confirmation before continuing. Custom ports are saved to `.wizard.json` alongside your other settings. On the next run the saved ports are reused automatically — no need to pass the flags again. If you later pass different port flags, the wizard warns you that the ports changed and asks for confirmation before continuing.
+17 -3
View File
@@ -55,6 +55,7 @@ type ports struct {
func main() { func main() {
setupOnly := flag.Bool("setup-only", false, "show patching instructions and exit without building or launching") setupOnly := flag.Bool("setup-only", false, "show patching instructions and exit without building or launching")
preferSaved := flag.Bool("prefer-saved", false, "reuse saved config without prompting")
grpcPort := flag.Int("grpc-port", defaultGRPCPort, "gRPC server port") grpcPort := flag.Int("grpc-port", defaultGRPCPort, "gRPC server port")
cdnPort := flag.Int("cdn-port", defaultCDNPort, "CDN server port") cdnPort := flag.Int("cdn-port", defaultCDNPort, "CDN server port")
authPort := flag.Int("auth-port", defaultAuthPort, "auth server port") authPort := flag.Int("auth-port", defaultAuthPort, "auth server port")
@@ -77,7 +78,7 @@ func main() {
downloadDeps() downloadDeps()
} }
ip, cfg, firstRun := resolveIP() ip, cfg, firstRun := resolveIP(*preferSaved)
p := resolvePorts(flagSet, *grpcPort, *cdnPort, *authPort, cfg) p := resolvePorts(flagSet, *grpcPort, *cdnPort, *authPort, cfg)
savedPorts := portsFromConfig(cfg) savedPorts := portsFromConfig(cfg)
@@ -311,12 +312,25 @@ func runQuiet(cmd *exec.Cmd, label string) {
} }
} }
func resolveIP() (string, config, bool) { func resolveIP(preferSaved bool) (string, config, bool) {
if cfg, err := loadConfig(); err == nil { cfg, err := loadConfig()
if err == nil {
if preferSaved {
if isLANBased(cfg) {
if ip, updated, ok := recheckLANIP(cfg); ok {
return ip, updated, false
}
}
return cfg.IP, cfg, false
}
ip, cfg, done := handleSavedConfig(cfg) ip, cfg, done := handleSavedConfig(cfg)
if done { if done {
return ip, cfg, false return ip, cfg, false
} }
} else if preferSaved {
fmt.Fprintln(os.Stderr, " --prefer-saved: no saved config found; run without the flag first.")
os.Exit(1)
} }
ip, cfg := runWizard() ip, cfg := runWizard()