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  }