github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/cli/tools/devel.go (about) 1 package tools 2 3 import ( 4 "context" 5 "github.com/bep/simplecobra" 6 "github.com/esnet/gdg/cli/support" 7 "github.com/spf13/cobra" 8 "log/slog" 9 "os" 10 ) 11 12 func newDevelCmd() simplecobra.Commander { 13 return &support.SimpleCommand{ 14 NameP: "devel", 15 Short: "Developer Tooling", 16 Long: "Developer Tooling", 17 CommandsList: []simplecobra.Commander{newServerInfoCmd(), newCompletion()}, 18 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 19 return cd.CobraCommand.Help() 20 }, 21 } 22 } 23 24 func newServerInfoCmd() simplecobra.Commander { 25 return &support.SimpleCommand{ 26 NameP: "srvinfo", 27 Short: "server health info", 28 Long: "server health info", 29 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 30 result := rootCmd.GrafanaSvc().GetServerInfo() 31 for key, value := range result { 32 slog.Info("", key, value) 33 } 34 return nil 35 }, 36 } 37 } 38 39 func newCompletion() simplecobra.Commander { 40 return &support.SimpleCommand{ 41 NameP: "completion [bash|zsh|fish|powershell]", 42 Short: "Generate completion script", 43 Long: "Generate completion script", 44 RunFunc: func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *support.RootCommand, args []string) error { 45 var err error 46 switch args[0] { 47 case "bash": 48 err = cd.CobraCommand.GenBashCompletion(os.Stdout) 49 case "zsh": 50 err = cd.CobraCommand.GenZshCompletion(os.Stdout) 51 case "fish": 52 err = cd.CobraCommand.GenFishCompletion(os.Stdout, true) 53 case "powershell": 54 err = cd.CobraCommand.GenPowerShellCompletion(os.Stdout) 55 } 56 return err 57 }, 58 WithCFunc: func(cmd *cobra.Command, r *support.RootCommand) { 59 cmd.ValidArgs = []string{"bash", "zsh", "fish", "powershell"} 60 cmd.Args = cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs) 61 62 }, 63 } 64 }