1.前言
打开k8s代码的时候,我发现基本上那几个核心服务都是使用cobra库作为命令行处理的能力。因此,为了对代码之后的代码学习的有比较深入的理解,因此先基于这个库写个demo,加深对这个库的一些理解吧
2.cobra库的基本简介
Github:GitHub - spf13/cobra: A Commander for modern Go CLI interactions 在这里了,Cobra是一个用Go语言实现的命令行工具。并且现在正在被很多项目使用,例如:Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速的创建命令行工具,特别适合写 测试脚本,各种服务的 Admin CLI等。
因为命令行参数,golang本身自带了"flag" 库,使用flag库呢
flag.Parse()
args := flag.Args()
解析完之后,需要每个命令去判断,十分的麻烦。
但是我们在使用到时候,需要针对命令行进行各种解析判断,但是有了这个库,我们就可以减少这段冗余的代码了
3 cobra的使用demo
话不多说,我们直接给出怎么用这个项目。我的环境是在macos上。
3.1 首先下载依赖库
命令行执行
go get -u github.com/spf13/cobra@latest
3.2 命令行CLI工具
$ go install github.com/spf13/cobra-cli@latest
因为我本身我的golang代码路径已经建好了bin目录,因此,执行完该命令后,如下

我们看到了cobra-cli的可执行文件。
这边是我们可以在命令用这个东西,进行初始化了。集体步骤如下
xxx@MBP src % mkdir greet
xxx@MBP src % cd greet
xxx@MBP test % ls
xxx@MBP greet % cobra-cli init
Error: Please run `go mod init <MODNAME>` before `cobra-cli init`
xxx@MBP greet % go mod init greet
go: creating new go.mod: module greet
xxx@MBP greet % ls
go.mod
xxx@MBP greet % cobra-cli init
Your Cobra application is ready at
/Users/XXX/workspace/golang/src/greet
xxx@MBP greet % ls
LICENSE cmd go.mod go.sum main.go
xxx@MBP greet %
第一步先建好一个test目录,然后执行go mod init test,然后再执行cobra-cli init的命令行,就会生成了脚手架文件了。
目录中会产生一下文件:
main.go cmd LICENSE go.mod go.sum
├── LICENSE
├── cmd
│ └── root.go
└── main.go
go.mod
go.sum
3.3 编写代码文件
刚刚生成的文件


1567

被折叠的 条评论
为什么被折叠?



