gpt4 book ai didi

go - 在带有多个父项的 go cobra 中添加子命令

转载 作者:行者123 更新时间:2023-12-01 22:15:42 24 4
gpt4 key购买 nike

我想在我正在构建的 cli 工具中选择以下 cmd 调用 go使用 cobra :

$ mytool envs apps compare
$ mytool envs vars compare

因此,我正在创建命令并执行绑定(bind),如下所示:

    rootCmd.AddCommand(envsCmd)
envsCmd.AddCommand(appsCmd)
envsCmd.AddCommand(varsCmd)
varsCmd.AddCommand(compareCmd)
appsCmd.AddCommand(compareCmd)

但是,当检查 compare 的父级时子命令,结果总是 apps
var compareCmd = &cobra.Command{
Hidden: false,
Use: "compare",
Short: "",
Long: ``,
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Println(cmd.Parent().Use)

上面总是打印 apps不管我是否调用
$ mytool envs apps compare

或者
$ mytool envs vars compare

我是否应该假设至少使用 cobra 无法实现我想要实现的目标? ?

最佳答案

这些命令使用指针链接,因此您添加的最后一个成为父命令。请尝试使用相同命令的两个副本:

var baseCompareCmd = cobra.Command{...}
var varCompareCmd = baseCompareCmd
var appsCompareCmd = baseCompareCmd

varsCmd.AddCommand(&varCompareCmd)
appsCmd.AddCommand(&appsCompareCmd)

关于go - 在带有多个父项的 go cobra 中添加子命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60420572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com