Files
grokway/cmd/client/main.go

67 lines
1.5 KiB
Go
Raw Normal View History

2026-01-27 02:26:17 +01:00
package main
import (
"flag"
"fmt"
"grokway/internal/config"
"grokway/internal/tui"
"os"
tea "github.com/charmbracelet/bubbletea"
)
func main() {
// Subcommand handling
if len(os.Args) > 1 && os.Args[1] == "configure" {
configureCmd := flag.NewFlagSet("configure", flag.ExitOnError)
tokenFlag := configureCmd.String("token", "", "Authentication token")
serverFlag := configureCmd.String("server", "", "Grokway server address (e.g., localhost:2222)")
configureCmd.Parse(os.Args[2:])
if *tokenFlag == "" {
fmt.Println("Error: --token is required")
os.Exit(1)
}
if err := config.Save(*tokenFlag, *serverFlag); err != nil {
fmt.Printf("Error saving config: %v\n", err)
os.Exit(1)
}
fmt.Println("Configuration saved successfully!")
return
}
// Normal run
localPort := flag.String("local", "8080", "Local port to expose")
serverAddrFlag := flag.String("server", "", "Grokway server address")
tokenFlag := flag.String("token", "", "Authentication token (overrides config)")
flag.Parse()
// Load config
cfg, err := config.Load()
authToken := *tokenFlag
serverAddr := *serverAddrFlag
if err == nil {
if authToken == "" {
authToken = cfg.Token
}
if serverAddr == "" {
serverAddr = cfg.ServerURL
}
}
// Default server address if not specified anywhere
if serverAddr == "" {
serverAddr = "localhost:2222"
}
m := tui.InitialModel(*localPort, serverAddr, authToken)
p := tea.NewProgram(m, tea.WithAltScreen())
if _, err := p.Run(); err != nil {
fmt.Printf("Alas, there's been an error: %v", err)
os.Exit(1)
}
}