用途
go-cobra 技能用于编写、搭建和调试基于 github.com/spf13/cobra 的 Go 命令行应用。当用户提到 Cobra、cobra.Command,想在 Go 中构建 CLI、为 CLI 添加命令或子命令、处理标志(持久、本地、必填)、实现 shell 补全、生成文档,或询问任何关于基于 Cobra 的 CLI 开发问题时,都可以使用该技能。
主要能力
- 搭建 Go CLI 项目结构,提供最小可运行的 main.go 与 root.go 示例。
- 创建命令与子命令,支持 Use、Aliases、Short、Long、Example、Run、RunE、Args、ValidArgs、ValidArgsFunction、Hidden、Deprecated、Version 等字段。
- 定义标志:持久标志与本地标志,支持 StringVar、StringVarP、BoolVar、IntVar、StringSliceVar、StringArrayVar、CountVarP 等方法。
- 标志约束:必填标志、标志组(必须同时使用、互斥、至少一个、恰好一个)、计数标志(-v、-vv、-vvv)。
- 位置参数校验:内置校验器(NoArgs、ArbitraryArgs、MinimumNArgs、MaximumNArgs、ExactArgs、RangeArgs、OnlyValidArgs)及组合与自定义校验。
- 生命周期钩子:PersistentPreRun、PreRun、Run、PostRun、PersistentPostRun 及其 RunE 变体。
- Viper 集成:绑定标志与配置,优先级为标志 > 环境变量 > 配置文件 > 默认值。
- 帮助与用法:自动 --help/-h、help 子命令、拼写建议,以及自定义帮助/用法模板与函数。
- 版本标志与自定义版本模板。
- 命令分组。
- Shell 补全:自动补全命令,支持 Bash、Zsh、Fish、PowerShell,以及动态补全函数。
- 文档生成:Markdown、man 页等。
- 插件创建(如 kubectl 风格插件)。
- 全局设置:大小写不敏感匹配、前缀匹配、遍历运行钩子、禁用命令排序。
- 命令测试:捕获输出、设置参数、执行并校验。
- 上下文支持:ExecuteContext 与 cmd.Context()。
- 常见模式:子命令分包组织、错误处理、静默/安静模式。
使用方式
安装:
go get -u github.com/spf13/cobra@latest
可选安装 CLI 生成器:
go install github.com/spf13/cobra-cli@latest
项目结构示例:
myapp/ cmd/ root.go version.go serve.go main.go
main.go 仅调用 cmd.Execute()。root.go 定义 rootCmd 与 Execute()。
命令模式为 APPNAME COMMAND ARG --FLAG。
适用场景
- 在 Go 中构建命令行工具。
- 为现有 Go 应用添加命令与子命令。
- 需要标志解析、参数校验、shell 补全、文档生成等 CLI 功能。
- 需要与 Viper 集成进行配置管理。
- 需要为 kubectl 等工具创建插件。
限制
资料未提供该技能的具体收费、价格、平台支持范围或效果保证等信息。