package cmd import ( "agent-wdd/config" "fmt" "github.com/spf13/cobra" "github.com/spf13/viper" ) var rootCmd = &cobra.Command{ Use: "wdd", Short: "wdd应用程序是wdd封装的NB工具", Long: `使用golang的强大特性,加上wdd的高超技术,\n打造一个方便、高效、适用于各种LINUX系统的瑞士军刀工具\n 尽情享用!`, Run: func(cmd *cobra.Command, args []string) { // Do Stuff Here }, } var cfgFile = "" var userLicense = "" var projectBase = "" func init() { cobra.OnInitialize(config.InitConfig) rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") rootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/") rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution") rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)") rootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration") viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) viper.BindPFlag("projectbase", rootCmd.PersistentFlags().Lookup("projectbase")) viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) viper.SetDefault("author", "Esdeath Wang(zeaslity@gamil.com)") viper.SetDefault("license", "apache") } func Execute() { // 1. base命令 baseCmd := &cobra.Command{ Use: "base", Short: "服务器基础操作", } addBaseSubcommands(baseCmd) // 2. zsh命令 zshCmd := &cobra.Command{ Use: "zsh", Short: "zsh相关的内容", } addZshSubcommands(zshCmd) // 3. proxy命令 proxyCmd := &cobra.Command{ Use: "proxy", Short: "主机代理相关的内容", } addProxySubcommands(proxyCmd) // 4. acme命令 acmeCmd := &cobra.Command{ Use: "acme", Short: "acme相关的内容", } addAcmeSubcommands(acmeCmd) // 5. wdd命令 wddCmd := &cobra.Command{ Use: "wdd", Short: "WDD相关操作", } addWddSubcommands(wddCmd) // 6. security命令 securityCmd := &cobra.Command{ Use: "security", Short: "安全相关操作", } // 7. info命令 infoCmd := &cobra.Command{ Use: "info", Short: "打印主机详细信息", } addInfoSubcommands(infoCmd) // 8. version命令 versionCmd := &cobra.Command{ Use: "version", Short: "打印版本信息", Run: func(cmd *cobra.Command, args []string) { // 实现version逻辑 fmt.Println("版本信息: 1.0.0") }, } // 9. config命令 configCmd := &cobra.Command{ Use: "config", Short: "配置文件管理", } addConfigSubcommands(configCmd) // 10. download命令 downloadCmd := &cobra.Command{ Use: "download", Short: "文件下载管理", } addDownloadSubcommands(downloadCmd) helpCmd := &cobra.Command{ Use: "help", Short: "帮助信息", Run: func(cmd *cobra.Command, args []string) { // 在你的命令执行函数中 cmd.Root().SetHelpFunc(func(c *cobra.Command, s []string) { // 直接使用默认帮助模板 c.Usage() }) }, } // 添加所有根命令 rootCmd.AddCommand( baseCmd, zshCmd, proxyCmd, acmeCmd, wddCmd, securityCmd, infoCmd, versionCmd, configCmd, downloadCmd, helpCmd, ) if err := rootCmd.Execute(); err != nil { fmt.Println(err) } }