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属性更改该默认行为,让其解析父命令中的本地标志:

最后更新于

这有帮助吗?