From f236b915a388517d75d9fc6d183b9bcdccb0e46f Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 13 Nov 2025 11:31:53 +0100 Subject: [PATCH] Added version command and router API --- main.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index 9cba6de..4130410 100644 --- a/main.go +++ b/main.go @@ -56,15 +56,10 @@ type Config struct { func main() { var cfg Config var verbose bool - var printVersion bool cmd := &cobra.Command{ Use: "arduino-router", Long: "Arduino router for msgpack RPC service protocol", Run: func(cmd *cobra.Command, args []string) { - if printVersion { - fmt.Println("Arduino router v" + Version) - return - } if verbose { cfg.LogLevel = slog.LevelDebug } else { @@ -80,12 +75,20 @@ func main() { }, } cmd.Flags().BoolVarP(&verbose, "verbose", "v", false, "Enable verbose logging") - cmd.Flags().BoolVar(&printVersion, "version", false, "Print version information") cmd.Flags().StringVarP(&cfg.ListenTCPAddr, "listen-port", "l", "", "Listening port for RPC services") cmd.Flags().StringVarP(&cfg.ListenUnixAddr, "unix-port", "u", "/var/run/arduino-router.sock", "Listening port for RPC services") cmd.Flags().StringVarP(&cfg.SerialPortAddr, "serial-port", "p", "", "Serial port address") cmd.Flags().IntVarP(&cfg.SerialBaudRate, "serial-baudrate", "b", 115200, "Serial port baud rate") cmd.Flags().StringVarP(&cfg.MonitorPortAddr, "monitor-port", "m", "127.0.0.1:7500", "Listening port for MCU monitor proxy") + + cmd.AddCommand(&cobra.Command{ + Use: "version", + Long: "Print version information", + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Arduino Router v" + Version) + }, + }) + if err := cmd.Execute(); err != nil { slog.Error("Error executing command.", "error", err) } @@ -160,6 +163,13 @@ func startRouter(cfg Config) error { // Register HCI API methods hciapi.Register(router) + // Register monitor version API methods + if err := router.RegisterMethod("$/version", func(_ context.Context, _ *msgpackrpc.Connection, _ []any) (any, any) { + return Version, nil + }); err != nil { + slog.Error("Failed to register version API", "err", err) + } + // Register monitor API methods if err := monitorapi.Register(router, cfg.MonitorPortAddr); err != nil { slog.Error("Failed to register monitor API", "err", err)