Go之Cobra仿写kubectl的命令行

package main

import (
	"fmt"
	"github.com/spf13/cobra"
	"log"
)

var (

	ns string
	//创建rootCmd主命令,并定义run执行函数(注意,此处是定义run函数而并非直接执行该函数,也可以通过rootcmd.ADDCommand方法添加子命令)
	//为命令添加命令行参数flag
	//执行rootCmd命令调用的函数,rootCmd.Execute会在内部回调run执行函数
	rootCmd = &cobra.Command{
		Use: "kubectl",
		Short: "",
		Long: "",
	}
	createCmd = &cobra.Command{
		Use: "create",
		Short: "资源对象",
	}

	getCmd = &cobra.Command{
		Use: "get",
		Short: "资源对象",
	}
	podtcmd = &cobra.Command{
		Use: "pod",
		Short: "pod",
		Run: func(cmd *cobra.Command, args []string) {
			if len(args) == 0 {
				fmt.Println("all")
			}else  {
				fmt.Println(args,"pod is ")
			}
		},
	}
	deploycmd = &cobra.Command{
		Use: "deploy",
		Short: "deployment",
		Run: func(cmd *cobra.Command, args []string) {
			fmt.Println(args,"deploy is")
		},
	}
)




func init() {
	rootCmd.PersistentFlags().StringVarP(&ns,"namespace","","default","namespace is ")
	//给get 跟create添加资源对象pod 跟deploy
	getCmd.AddCommand(podtcmd,deploycmd)
	createCmd.AddCommand(podtcmd,deploycmd)
	//为root主命令添加create 跟get
	rootCmd.AddCommand(getCmd,createCmd)
}

func main() {
	err := rootCmd.Execute()
	if err != nil {
		log.Fatalf("cmd.Execute err: %v", err)
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45413603/article/details/107525157
今日推荐