k8sailor: 自己写一个 Kubernetes 控制台
Toggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage

02 Design Cobra Command

使用 cobra 管理命令与参数

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 命令。 root.go

在代码中使用了 cobrautils 库帮助管理 flag 绑定。

func init() {
	cobrautils.BindFlags(rootCmd, global.Flags)
}

启动

main.go 调用 cmd/root.go 的启动函数。 运行结果如上所示。

目录结构

# tree 
.
├── README.md
├── cmd
│   └── k8sailor
│       ├── cmd
│       │   └── root.go
│       ├── global
│       │   └── config.go
│       ├── k8sconfig
│       │   └── config.yml
│       └── main.go
├── go.mod
└── go.sum

6 directories, 9 files