Cobra
cobra/user_guide.md at master · spf13/cobra
Cobra Generator
Cobra Generator是用于生成Cobra命令行应用代码的脚手架,使用如下命令安装脚手架程序到$GOPATH/bin目录下。
go install github.com/spf13/cobra/cobra@latest他提供了如下控制台命令用于生成命令行程序的代码:
cobra init
创建一个Cobra 命令行程序代码:
$ mkdir myapp && cd myapp
$ go mod init myapp
go: creating new go.mod: module myapp
$ cobra init --pkg-name myapp
Your Cobra application is ready at
/Users/yangsx/Project/temp/myapp
$ tree -N
.
├── LICENSE # 默认使用 Apache License
├── cmd # 此包下的每个源码文件代表一个命令
│ └── root.go # root.go 代表根命令
├── go.mod
└── main.go指定许可证与作者创建:
设置是否启用viper(是同一个作者写的应用程序完整配置的解决方案):
生成的代码文件如下:
main.go:
cmd/root.go:
cobra add
给根命令添加子命令:
将会在cmd/包下创建test.go文件:
也可以指定父命令,并创建子命令,指定test命令,创建他的子命令 child:
Cobra Library
创建命令
在cmd/下创建go文件:
如果要返回error给调用方,可以使用RunE:
Flag
Cobra将Flag的方法大致分成以下几类:
可根据情况选择不同的方法。
Required Flag
Local Flags
本地flag,代表该flag只适用当前的命令,他的父命令、子命令都不可以用:
Persistent Flags
持久命令是指,为命令设置的flag参数,也会应用到他的子命令上,与Local Flag 相对应:
Local Flag on Parent Commands
默认情况下,本地flag不会被子命令接收到,我们可以通过TraverseChildren属性更改该默认行为,让其解析父命令中的本地标志:
最后更新于
这有帮助吗?