Cobra
Cobra简介
Cobra 是一个用于生成命令行工具的框架,非常简单、易用,kubernetes/docker/hugo/etcd等都是使用Cobra开发的命令行工具。
Cobra安装
go get -u github.com/spf13/cobra@latest- 安装项目内使用的 Cobrago get -u github.com/spf13/cobra-cli@latest- 安装 Cobra 命令行工具import 'github.com/spf13/cobra'- 项目内使用
cobra-cli命令介绍
cobra-cli add [command name] - 为应用添加一个命令
cobra-cli init [path] [flag] - 使用cobra初始化一个新的应用
-a—author- 设置版权信息的作者名,默认为YOUR NAME--config- 设置邮箱等其他配置,存储在$HOME/.cobra.yaml中-l--license- 设置项目使用的开源协议--viper- 使用Viper加载config- 新版本已经取消掉
--pkg-name参数,取代的是path地址,如果输入path地址,则会在当前所在的目录下创建一个path地址,并初始化为 Cobra 模式的项目 -h--help- 查看cobra-cli init的帮助
Cobra项目创建
初始化一个cobra项目,必须在go module的目录下执行,示例中创建一个 clid 项目
mkdir clidcd clidgo mod init clidcobra-cli init -a stolen -l MIT --viper
cobra初始化后的目录结构如下
1 | . |
修改作者信息
建议初始化就修改好作者的信息,否则修改会比较麻烦
1 | cobra-cli init --author stolen |
新增命令
会在cmd目录下创建一个新文件
1 | cobra-cli add version |
命令编译与运行
go build- 编译命令clid- 运行命令
为命令添加一个子命令
cobra-cli add [command name] - 为应用添加一个命令
cobra-cli add version- 为应用添加一个 version 命令
命令的基本结构
- short - 显示父级命令帮助时,对该命令的简介
- long - 显示当前命令帮助是显示的内容
- run - 运行执行的操作
将命令绑定到父命令上的方法
1
rootCmd.AddCommand(versionCmd)
为命令添加一个选项
1 | func init(){ |
使用命令
1 | var versionCmd = &cobra.Command{ |