From 2b411eb69c9b1273d13fde8f9206bd82f232e53d Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Tue, 2 Dec 2025 15:08:29 +0100 Subject: [PATCH] migrate nats from urfave/cli to spf13/cobra Signed-off-by: Christian Richter --- services/nats/pkg/command/health.go | 13 +++++++------ services/nats/pkg/command/root.go | 18 ++++++++++-------- services/nats/pkg/command/server.go | 17 ++++++++--------- services/nats/pkg/command/version.go | 14 +++++++------- 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/services/nats/pkg/command/health.go b/services/nats/pkg/command/health.go index 28e5e1e3c4..42ec1ad842 100644 --- a/services/nats/pkg/command/health.go +++ b/services/nats/pkg/command/health.go @@ -2,15 +2,16 @@ package command import ( "github.com/opencloud-eu/opencloud/services/nats/pkg/config" - "github.com/urfave/cli/v2" + + "github.com/spf13/cobra" ) // Health is the entrypoint for the health command. -func Health(cfg *config.Config) *cli.Command { - return &cli.Command{ - Name: "health", - Usage: "Check health status", - Action: func(c *cli.Context) error { +func Health(cfg *config.Config) *cobra.Command { + return &cobra.Command{ + Use: "health", + Short: "Check health status", + RunE: func(cmd *cobra.Command, args []string) error { // Not implemented return nil }, diff --git a/services/nats/pkg/command/root.go b/services/nats/pkg/command/root.go index 2a03708e1e..10951422b5 100644 --- a/services/nats/pkg/command/root.go +++ b/services/nats/pkg/command/root.go @@ -5,12 +5,13 @@ import ( "github.com/opencloud-eu/opencloud/pkg/clihelper" "github.com/opencloud-eu/opencloud/services/nats/pkg/config" - "github.com/urfave/cli/v2" + + "github.com/spf13/cobra" ) // GetCommands provides all commands for this service -func GetCommands(cfg *config.Config) cli.Commands { - return []*cli.Command{ +func GetCommands(cfg *config.Config) []*cobra.Command { + return []*cobra.Command{ // start this service Server(cfg), @@ -24,11 +25,12 @@ func GetCommands(cfg *config.Config) cli.Commands { // Execute is the entry point for the nats command. func Execute(cfg *config.Config) error { - app := clihelper.DefaultApp(&cli.App{ - Name: "nats", - Usage: "starts nats server", - Commands: GetCommands(cfg), + app := clihelper.DefaultAppCobra(&cobra.Command{ + Use: "nats", + Short: "starts nats server", }) + app.AddCommand(GetCommands(cfg)...) + app.SetArgs(os.Args[1:]) - return app.RunContext(cfg.Context, os.Args) + return app.ExecuteContext(cfg.Context) } diff --git a/services/nats/pkg/command/server.go b/services/nats/pkg/command/server.go index b47a93e5b7..3bf9169389 100644 --- a/services/nats/pkg/command/server.go +++ b/services/nats/pkg/command/server.go @@ -6,8 +6,6 @@ import ( "fmt" "os/signal" - "github.com/urfave/cli/v2" - "github.com/opencloud-eu/opencloud/pkg/config/configlog" pkgcrypto "github.com/opencloud-eu/opencloud/pkg/crypto" "github.com/opencloud-eu/opencloud/pkg/runner" @@ -16,18 +14,19 @@ import ( "github.com/opencloud-eu/opencloud/services/nats/pkg/logging" "github.com/opencloud-eu/opencloud/services/nats/pkg/server/debug" "github.com/opencloud-eu/opencloud/services/nats/pkg/server/nats" + + "github.com/spf13/cobra" ) // Server is the entrypoint for the server command. -func Server(cfg *config.Config) *cli.Command { - return &cli.Command{ - Name: "server", - Usage: fmt.Sprintf("start the %s service without runtime (unsupervised mode)", cfg.Service.Name), - Category: "server", - Before: func(c *cli.Context) error { +func Server(cfg *config.Config) *cobra.Command { + return &cobra.Command{ + Use: "server", + Short: fmt.Sprintf("start the %s service without runtime (unsupervised mode)", cfg.Service.Name), + PreRunE: func(cmd *cobra.Command, args []string) error { return configlog.ReturnFatal(parser.ParseConfig(cfg)) }, - Action: func(c *cli.Context) error { + RunE: func(cmd *cobra.Command, args []string) error { logger := logging.Configure(cfg.Service.Name, cfg.Log) var cancel context.CancelFunc diff --git a/services/nats/pkg/command/version.go b/services/nats/pkg/command/version.go index b7db8b15a7..2146d1815b 100644 --- a/services/nats/pkg/command/version.go +++ b/services/nats/pkg/command/version.go @@ -2,16 +2,16 @@ package command import ( "github.com/opencloud-eu/opencloud/services/nats/pkg/config" - "github.com/urfave/cli/v2" + + "github.com/spf13/cobra" ) // Version prints the service versions of all running instances. -func Version(cfg *config.Config) *cli.Command { - return &cli.Command{ - Name: "version", - Usage: "print the version of this binary and the running service instances", - Category: "info", - Action: func(c *cli.Context) error { +func Version(cfg *config.Config) *cobra.Command { + return &cobra.Command{ + Use: "version", + Short: "print the version of this binary and the running service instances", + RunE: func(cmd *cobra.Command, args []string) error { // not implemented return nil },