github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cli/commandeer.go (about) 1 package cli 2 3 import ( 4 "context" 5 "github.com/bep/simplecobra" 6 "github.com/esnet/gdg/cli/backup" 7 "github.com/esnet/gdg/cli/support" 8 "github.com/esnet/gdg/cli/tools" 9 assets "github.com/esnet/gdg/config" 10 "log/slog" 11 ) 12 13 // Execute executes a command. 14 func Execute(defaultCfg string, args []string, options ...support.RootOption) error { 15 var err error 16 support.DefaultConfig, err = assets.GetFile(defaultCfg) 17 if err != nil { 18 slog.Warn("unable to find load default configuration", "err", err) 19 } 20 rootCmd := support.NewRootCmd(getNewRootCmd(), options...) 21 x, err := simplecobra.New(rootCmd) 22 if err != nil { 23 return err 24 } 25 26 cd, err := x.Execute(context.Background(), args) 27 28 if err != nil || len(args) == 0 { 29 _ = cd.CobraCommand.Help() 30 return err 31 } 32 33 return nil 34 } 35 36 func getNewRootCmd() *support.RootCommand { 37 return &support.RootCommand{ 38 NameP: "gdg", 39 CommandEntries: []simplecobra.Commander{ 40 newVersionCmd(), 41 tools.NewToolsCommand(), 42 backup.NewBackupCommand(), 43 }, 44 } 45 }