Cobra 子命令实现详解

作者: adm 分类: go 发布时间: 2021-12-10 23:18

在 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 方法添加到父命令当中,就可以实现嵌套的子命令了。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!