开发 k8s 管理平台 - k8sailor 02. 使用 cobra 初始化程序命令与参数
原文地址: https://tangx.in/posts/books/k8sailor/chapter01/02-design-cobra-command/
tag: https://github.com/tangx/k8sailor/tree/feat/01-cobra-command
为了更加方便的管理配置文件的来源, 这里使用 cobra 进行命令行构建
效果如下
cd cmd/k8sailor && go run .
k8s 管理平台
Usage:
k8sailor [flags]
Flags:
--config string k8s 配置授权文件 (default "./k8sconfig/config.yml")
-h, --help help for k8sailor
编码
变量管理
在 cmd/k8sailor/global
目录中管理 全局 变量。
其中,定义一个 CmdFlag
结构体管理所有 cobra flags。
type CmdFlags struct {
Config string `flag:"config" usage:"k8s 配置授权文件" persistent:"true"`
}
var Flags = &CmdFlags{
Config: "./k8sconfig/config.yml",
}
cobra
在 cmd/k8sailor/cmd
中管理所有 cobra 命令。
在代码中使用了 cobrautils 库帮助管理 flag 绑定。
func init() {
cobrautils.BindFlags(rootCmd, global.Flags)
}
启动
目录结构
# tree
.
├── README.md
├── cmd
│ └── k8sailor
│ ├── cmd
│ │ └── root.go
│ ├── global
│ │ └── config.go
│ ├── k8sconfig
│ │ └── config.yml
│ └── main.go
├── go.mod
└── go.sum
6 directories, 9 files