package command import ( "context" "os" "os/signal" "syscall" "github.com/qsfera/server/qsfera/pkg/register" "github.com/qsfera/server/pkg/clihelper" "github.com/qsfera/server/pkg/config" "github.com/spf13/cobra" ) // Execute is the entry point for the qsfera command. func Execute() error { cfg := config.DefaultConfig() app := clihelper.DefaultApp(&cobra.Command{ Use: "qsfera", Short: "qsfera", }) for _, commandFactory := range register.Commands { command := commandFactory(cfg) if command.GroupID != "" && !app.ContainsGroup(command.GroupID) { app.AddGroup(&cobra.Group{ ID: command.GroupID, Title: command.GroupID, }) } app.AddCommand(command) } app.SetArgs(os.Args[1:]) ctx, _ := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP) return app.ExecuteContext(ctx) }