First stab at maglevc
This commit is contained in:
49
cmd/maglevc/main.go
Normal file
49
cmd/maglevc/main.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright (c) 2026, Pim van Pelt <pim@ipng.ch>
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials/insecure"
|
||||
|
||||
"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")
|
||||
flag.Parse()
|
||||
|
||||
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.
|
||||
return runShell(ctx, client)
|
||||
}
|
||||
|
||||
// One-shot command from CLI arguments.
|
||||
root := buildTree()
|
||||
tokens := splitTokens(strings.Join(args, " "))
|
||||
return dispatch(ctx, root, client, tokens)
|
||||
}
|
||||
Reference in New Issue
Block a user