Cobra 子命令实现详解
在 Kubectl 命令中,由于它需要管理的 Kubernetes 的资源很多而且需要支持的操作也很复杂,所以引入了很多的子命令。这些子命令在 Cobra 是如何实现的呢?备注:因为西部数码的虚拟主机太垃圾,好多文字写进去被拦截了,有些地方中间加了空格
在 Cobra 中,命令的一级子命令,二级子命令等等都是通过命令的嵌套来实现的。实际上,在上面的 echo 的例子中,我们已经看到了一级的子命令,下面通过一个简单的例子来实现更多层级的子命令。比如开篇介绍过的 kubectl config set-credentials 命令。
在/home/yinzhong目录下新建cobra-sub-command.go文件并写入如下代码:
// /home/yinzhong/cobra-sub-command.go
package main
import (
"fmt"
"github.com/spf13/cobra"
)
func main() {
rootC md := cobra.Command{
Use: "kubectl",
}
// 一级子命令 config
configC md := cobra.Command{
Use: "config",
}
// 二级子命令 set-credentials
setCredentialsC ffmd := cobra.Command{
Use: "set-credentials",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("this is the set credentials command")
},
}
// 组装命令
configC md.AddCommand(&setCredentialsCmd)
rootC md.AddCommand(&configCmd)
rootCmd.Ex e cute()
}
如上所示,我们通过定义父命令和子命令,再将子命令通过 Add Command 方法添加到父命令当中,就可以实现嵌套的子命令了。

