@@ -2,114 +2,20 @@ package main
22
33import (
44 "errors"
5- "fmt"
65 "os"
76
8- mcobra "github.com/muesli/mango-cobra"
9- "github.com/muesli/roff"
107 "github.com/rs/zerolog"
118 "github.com/sercand/kuberesolver/v5"
12- "github.com/spf13/cobra"
139 "google.golang.org/grpc/balancer"
1410 _ "google.golang.org/grpc/xds"
1511
1612 log "github.com/authzed/spicedb/internal/logging"
1713 "github.com/authzed/spicedb/pkg/cmd"
1814 cmdutil "github.com/authzed/spicedb/pkg/cmd/server"
19- "github.com/authzed/spicedb/pkg/cmd/testserver"
2015 _ "github.com/authzed/spicedb/pkg/runtime"
2116 "github.com/authzed/spicedb/pkg/spiceerrors"
2217)
2318
24- var errParsing = errors .New ("parsing error" )
25-
26- // buildRootCommand creates and configures the complete SpiceDB CLI command structure
27- func buildRootCommand () (* cobra.Command , error ) {
28- // Create a root command
29- rootCmd := cmd .NewRootCommand ("spicedb" )
30- rootCmd .SetFlagErrorFunc (func (cmd * cobra.Command , err error ) error {
31- cmd .Println (err )
32- cmd .Println (cmd .UsageString ())
33- return errParsing
34- })
35- if err := cmd .RegisterRootFlags (rootCmd ); err != nil {
36- return nil , fmt .Errorf ("failed to register root flags: %w" , err )
37- }
38-
39- // Add a version command
40- versionCmd := cmd .NewVersionCommand (rootCmd .Use )
41- cmd .RegisterVersionFlags (versionCmd )
42- rootCmd .AddCommand (versionCmd )
43-
44- // Add datastore commands
45- datastoreCmd , err := cmd .NewDatastoreCommand (rootCmd .Use )
46- if err != nil {
47- return nil , fmt .Errorf ("failed to register datastore command: %w" , err )
48- }
49-
50- cmd .RegisterDatastoreRootFlags (datastoreCmd )
51- rootCmd .AddCommand (datastoreCmd )
52-
53- // Add deprecated head command
54- headCmd := cmd .NewHeadCommand (rootCmd .Use )
55- cmd .RegisterHeadFlags (headCmd )
56- headCmd .Hidden = true
57- headCmd .RunE = cmd .DeprecatedRunE (headCmd .RunE , "spicedb datastore head" )
58- rootCmd .AddCommand (headCmd )
59-
60- // Add deprecated migrate command
61- migrateCmd := cmd .NewMigrateCommand (rootCmd .Use )
62- migrateCmd .Hidden = true
63- migrateCmd .RunE = cmd .DeprecatedRunE (migrateCmd .RunE , "spicedb datastore migrate" )
64- cmd .RegisterMigrateFlags (migrateCmd )
65- rootCmd .AddCommand (migrateCmd )
66-
67- // Add server commands
68- serverConfig := cmdutil .NewConfigWithOptionsAndDefaults ()
69- serveCmd := cmd .NewServeCommand (rootCmd .Use , serverConfig )
70- if err := cmd .RegisterServeFlags (serveCmd , serverConfig ); err != nil {
71- return nil , fmt .Errorf ("failed to register server flags: %w" , err )
72- }
73- rootCmd .AddCommand (serveCmd )
74-
75- lspConfig := new (cmd.LSPConfig )
76- lspCmd := cmd .NewLSPCommand (rootCmd .Use , lspConfig )
77- if err := cmd .RegisterLSPFlags (lspCmd , lspConfig ); err != nil {
78- return nil , fmt .Errorf ("failed to register lsp flags: %w" , err )
79- }
80- rootCmd .AddCommand (lspCmd )
81-
82- var testServerConfig testserver.Config
83- testingCmd := cmd .NewTestingCommand (rootCmd .Use , & testServerConfig )
84- cmd .RegisterTestingFlags (testingCmd , & testServerConfig )
85- rootCmd .AddCommand (testingCmd )
86-
87- rootCmd .AddCommand (& cobra.Command {
88- Use : "man" ,
89- Short : "Generate man page" ,
90- Long : `Generate a man page for SpiceDB.
91-
92- The output can be redirected to a file and installed to the system:
93- spicedb man > spicedb.1
94- sudo mv spicedb.1 /usr/share/man/man1/
95- sudo mandb # Update man page database` ,
96- SilenceUsage : true ,
97- DisableFlagsInUseLine : true ,
98- Args : cobra .NoArgs ,
99- RunE : func (cmd * cobra.Command , args []string ) error {
100- manPage , err := mcobra .NewManPage (1 , cmd .Root ())
101- if err != nil {
102- return err
103- }
104-
105- _ , err = fmt .Fprint (os .Stdout , manPage .Build (roff .NewDocument ()))
106- return err
107- },
108- })
109-
110- return rootCmd , nil
111- }
112-
11319func main () {
11420 // Set up root logger
11521 // This will typically be overwritten by the logging setup for a given command.
@@ -122,13 +28,13 @@ func main() {
12228 balancer .Register (cmdutil .ConsistentHashringBuilder )
12329
12430 // Build the complete command structure
125- rootCmd , err := buildRootCommand ()
31+ rootCmd , err := cmd . BuildRootCommand ()
12632 if err != nil {
12733 log .Fatal ().Err (err ).Msg ("failed to build root command" )
12834 }
12935
13036 if err := rootCmd .Execute (); err != nil {
131- if ! errors .Is (err , errParsing ) {
37+ if ! errors .Is (err , cmd . ErrParsing ) {
13238 log .Err (err ).Msg ("terminated with errors" )
13339 }
13440 var termErr spiceerrors.TerminationError
0 commit comments