Cobra快速入门
Cobra(Go的CLI应用框架)

什么是Cobra
Cobra 是 Go 的 CLI 框架。它包含一个用于创建功能强大的现代 CLI 应用程序的库和一个用于快速生成基于 Cobra 的应用程序和命令文件的工具。它是由 Go 团队成员 spf13为hugo创建的,已被最受欢迎的 Go 项目采用。
Cobra功能
- 简单的基于子命令的 CLI:
app serverapp fetch等 - 嵌套
子命令 - 自动帮助标志识别
-h--help - 全局、本地、级联标志
- 应用程序自动生成
bash - 与
viper可紧密集成。 - ...
安装Cobra
安装Cobra是非常简单的,我们只需要在自己的Go模块下,执行以下命令便可直接使用Corbra。
// 安装Corba
go get -u github.com/spf13/cobra/cobra
在使用过程中,你只需要导入使用以下命令导入Cobra的源码包,即可直接使用Cobra的功能来进行自定义开发
// 导入源码包
import " github.com/spf13/cobra"
Cobra常用命令
Cobra为了能让我们更加快速的构建自己的Cli工具,提供了一些快捷构建的命令。
- 创建命令程序应用
cobra init - 添加命令
cobra add version
命令的组成结构
开发一个自定义的命令行应用之前,我们需要了解一个命令的基本组成结构 ,一个命令的基本组成结构如下所示。
-
命令
Commands执行动作 -
参数
Args执行参数 -
标志
Flags表示对动作的修饰下面我们通过一些命令来更快的理解
命令的组成结构
# git克隆命令
git clone URL --bare
- git
(命令):跟命令,一般为应用程序的名字 - clone
(命令):是git下的一个子命令 - URL
(参数):这里泛指git需要clone的地址 - --bare
(标志):这里泛指使用什么方式进行克隆
拓展点:在Cobra中的标志,有持久标志和本地标志两种标志。
- 持久标志:即在该命令
Commands应用程序中所有的标志都可以使用。 - 本地标志:只能在特定的命令
Commands中使用。
// 绑定到持久标志
RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra_exp1.yaml)")
// 绑定本地标志
RootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
Cobra实战
一、初始化go moudle模块
二、切换到初始化的模块下,安装cobra
go get -u github.com/spf13/cobra/cobra
三、配置cobra的环境变量,更具自己操作系统酌情配置即可
四、初始化项目
# 初始化完成我们可看到如下的目录结构
cobra init cobra-demo --pkg-name github.com/xcbeyond/cobra-demo
# 打开初始化选择的目录
├── cmd
│ ├── root.go
├── go.mod
├── go.sum
└── main.go
五、打包应用程序
# 打包go应用程序
go build
# 打包完成后会生成可执行文件,该文件即是我们的命令行工具
六、添加命令
# 向应用程序中添加子命令
cobra add version
#查看目录结构(多了version.go文件)
├── cmd
│ ├── root.go
│ ├── versiongo
├── go.mod
├── go.sum
└── main.go
#添加完成后重新打包,即可使用如下命令
cobra-demo version
Cobra文档
Cobra的更多高级特性可参考文档

浙公网安备 33010602011771号