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 clid
cd clid
go mod init clid
cobra-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{ |