用途:该技能用于在 Go 中构建生产级 CLI 工具,Cobra 负责命令结构与参数解析,Viper 负责多来源配置管理。适用于多子命令工具、开发者工具、项目脚手架、服务管理 CLI、DevOps 自动化脚本,以及需要灵活配置(标志 > 环境变量 > 配置文件 > 默认值)和 Shell 补全的场景。
主要能力:Cobra 提供符合 POSIX 的 APPNAME VERB NOUN --FLAG 命令模式、子命令、持久标志与本地标志、必填标志、标志依赖与互斥、PreRun/PostRun 钩子(推荐使用带错误返回的 RunE、PreRunE、PostRunE)。Viper 支持标志、环境变量、配置文件(YAML、JSON、TOML、HCL、INI 等)、键值存储与默认值的统一读取,并可按优先级合并。集成方式为通过 viper.BindPFlag 或 viper.BindPFlags 将标志绑定到 Viper 键,并用 cobra.OnInitialize 或 PersistentPreRunE 加载配置。Cobra 可生成 bash、zsh、fish、PowerShell 补全脚本,并支持自定义参数与标志补全函数。
使用方式:定义 rootCmd 与子命令,在 init() 中注册标志并绑定 Viper;在 initConfig 中设置默认值、配置文件路径、环境变量前缀与 AutomaticEnv,再调用 ReadInConfig;通过 viper.GetString/GetInt/Unmarshal 读取配置。补全命令示例:myapp completion bash,加载方式如 source <(myapp completion bash)。
限制:资料未提供该技能的具体安装命令、版本要求、收费信息或平台限制;示例代码中的部署、日志、API 客户端等函数为占位实现,需自行补充。