// Copyright (c) 2026, Pim van Pelt package main import ( "context" "flag" "fmt" "os" "strings" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" buildinfo "git.ipng.ch/ipng/vpp-maglev/cmd" "git.ipng.ch/ipng/vpp-maglev/internal/grpcapi" ) func main() { if err := run(); err != nil { fmt.Fprintf(os.Stderr, "error: %v\n", err) os.Exit(1) } } func run() error { serverAddr := flag.String("server", "localhost:9090", "maglev server address") color := flag.Bool("color", true, "colorize static labels in output") flag.Parse() colorEnabled = *color conn, err := grpc.NewClient(*serverAddr, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { return fmt.Errorf("connect %s: %w", *serverAddr, err) } defer conn.Close() client := grpcapi.NewMaglevClient(conn) ctx := context.Background() args := flag.Args() if len(args) == 0 { // Interactive shell: announce version on startup. fmt.Printf("maglevc %s (commit %s, built %s)\n", buildinfo.Version(), buildinfo.Commit(), buildinfo.Date()) return runShell(ctx, client) } // One-shot command from CLI arguments. root := buildTree() tokens := splitTokens(strings.Join(args, " ")) return dispatch(ctx, root, client, tokens) }