加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

没有参数匹配的golang cobra子命令

发布时间:2020-12-16 09:24:58 所属栏目:大数据 来源:网络整理
导读:我想用 cobra创建golang CLI.目前,它运行良好.我创建了像foobar create –username johndoe这样的东西.但我需要像foobar创建用户–username johndoe这样的子命令.有用户子命令. 我用参数匹配创建了 var applicationCmd = cobra.Command{ Use: "application",
我想用 cobra创建golang CLI.目前,它运行良好.我创建了像foobar create –username johndoe这样的东西.但我需要像foobar创建用户–username johndoe这样的子命令.有用户子命令.

我用参数匹配创建了

var applicationCmd = &cobra.Command{
   Use:   "application",Short: "Create/Read/Update application",Long: `You can create any user or partner.`,Run: (cmd *cobra.Command,args []string) {
        if len(args) < 1 {
            fmt.Printf("%sPlease choose any object that you want to change e.g (user,partner)%sn",chalk.Red,chalk.Reset)
        }
        if stringUtil.Contains(args,"user") {
            createUser()
        }
        if stringUtil.Contains(args,"partner") {
            createPartner()
        }
   },}

但我认为有一种更好的方法可以使用眼镜蛇而不是使用像这样匹配的参数.有什么建议吗?

解决方法

我略微落水;但是,appCmd.Addcommand(newCmd)就是你要找的.

(在你发布答案之前我已经开始研究这个了,但我不想废弃代码)

package main

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

var rootCmd = &cobra.Command{
    Use:   "app",Run: func (cmd *cobra.Command,args []string) {
    },}

var makeU = &cobra.Command{
    Use:   "makeU",Short: "makes a user",Long: "Prints stuff about the user. You could also use the flags in your addPartner() function",args []string) {
        fmt.Println("User's name: " + uName)
        fmt.Println("User's number: " + uNumber)
        fmt.Println("User's other stuff: " + uOtherStuff)
    },}

var makeP = &cobra.Command{
    Use:   "makeP",Short: "makes a partner",Long: "Prints stuff about the partner. You could also use the flags in your addPartner() function",args []string) {
        fmt.Println("Partner's name: " + uName)
        fmt.Println("Partner's number: " + uNumber)
        fmt.Println("Partner's other stuff: " + uOtherStuff)
    },}

// adds commands
func addCommands() {
    rootCmd.AddCommand(makeU)
    rootCmd.AddCommand(makeP)
}

// adds flags
var pName,pNumber,pOtherStuff string
var uName,uNumber,uOtherStuff string
func init() {
    makeU.Flags().StringVar(&uName,"username","default","--username=<user's name>")
    makeU.Flags().StringVar(&uNumber,"usernumber","--usernumber=<user's number>")
    makeU.Flags().StringVar(&uOtherStuff,"userother","--userother=<user's other stuff>")
    makeP.Flags().StringVar(&pName,"partnername","--partnername=<partner's name>")
    makeP.Flags().StringVar(&pNumber,"partnernumber","--partnernumber=<partner's number>")
    makeP.Flags().StringVar(&pOtherStuff,"partnerother","--partnerother=<partner's other stuff>")
}


func main() {
    addCommands()
    rootCmd.Execute()
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读