问题标签 [go-cobra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 将带有用破折号分隔的单词的标志映射到 camel_case 配置?
我有一个如下所示的配置格式:
我的基于 Cobra 的 CLI 有带有破折号的标志(例如--foo-bar=value1 --baz-bot=value2
)。
Viper 不知道如何将它们正确映射到配置中,当它们在 CLI 中设置以覆盖配置文件值时。这里有什么解决办法吗?Viper 配置设置如下所示:
如果 viper 无法做到,也愿意为支持此功能的库提供建议。
go - 如何在眼镜蛇应用程序的帮助屏幕中隐藏别名
是否可以禁止Aliases
显示在 golangcobra
应用程序的帮助屏幕中?我基本上想摆脱下面的整个“别名”部分:
我知道可以隐藏标志以防止出现在帮助 ( cmd.Flags().MarkHidden("myflag")
) 中。是否也可以隐藏别名?
go - Golang CLI 眼镜蛇计数标志
我想定义一个 CLI 标志来计算它出现的次数。
例如,让我们--verbose
用它的简写来定义标志-v
:
有没有内置的方法来实现它?
go - 使用 Go (golang)、cobra 和 viper 时,StringVar 与 StringVarP 或 String 与 StringP 有什么区别?
我正在维护一些使用 Go (golang)、Viper和Cobra编写的代码。
在一条线上,它具有:
然后在下一行它有
String
在这种情况下和有什么区别StringP
?
查看各种教程中的示例用法,似乎有各种方法的版本P
和非P
版本,例如StringVarP
和StringVar
。
这些版本有什么区别?的意义P
何在?
有没有办法可以判断给定方法是否有P
对应P
物?
搜索引擎倾向于将我带到 cobra 或 viper 教程页面,它们使用这些方法而不解释P
或不P
对应。
我发现一些材料pflags
表明它可能与参数是否具有短(一个字母)形式有关。会是这样吗?
编辑后说明:收到此问题的答案后,spf13/pflag
上述golang框架似乎确实在后台使用了它。但是,在使用 cobra 或 viper 时是否应该查看 pflags 文档并不清楚。
由于这是一个问答网站,我已经恢复了一个编辑,该编辑删除了我在寻找这个答案时输入的许多关键字,因为我觉得其他寻找相同信息的人会以这种方式得到更好的服务。
go - go-Cobra PersistentFlags 和 Flags 有什么区别?
我试图弄清楚 Go-Cobra 中 PersistentFlags 和 Flags 之间的区别是什么,以及我们应该何时使用它们中的每一个。我读过这个,但我不明白。
go - 如何在运行时添加命令,或定义未知命令的行为?
我有一个使用modules的项目,使用 CLI 命令调用(即myapp foo
调用foo
模块)。
模块可以是内置的或用户定义的。我用 Cobra 命令定义了一些内置模块,效果很好。现在我想处理用户定义的模块,因此myapp bar
将bar
在某个文件夹中查找文件,因为该bar
命令未定义。
如何在没有unknown command "bar"
错误的情况下执行此操作,或在运行时添加命令?
go - spf13/cobra 无法将二进制文件下载到 $GOPATH/bin
我想在我的项目中使用 spf13/cobra。
输入安装命令结果
但找不到cobra
命令和二进制文件。
这是我的环境。
并通过基于microsoft/vscode-remote-try-go 的容器进行开发。
如何将二进制文件安装到$GOPATH/bin
?
go - cobra PersistentPreRun 堆栈溢出
为什么以下使用 cobra 包的 CLI 程序在运行时会抛出堆栈溢出错误go run /tmp/test.go branch leaf
,但当叶子命令直接连接到 root 时不会出错(如主函数中所述)?
这表明我没有正确使用 cobra PersistenRun* 功能。我对 PersistenRun* 函数的理解是它们仅适用于命令的子级。问题似乎是命令的父级已以某种方式设置为命令本身。
go - 运行根命令逻辑+子命令逻辑
我有以下命令+子命令:
aws.go
out.go
当我执行go run main.go out --args s3 --args
上面运行 s3Command 内部的逻辑,但不运行 outCmd 内部的内容,有没有办法先运行 outCommand 逻辑,然后先运行 s3Cmd?
go-cobra - 使用 Cobra 更改为新标志名称时如何支持旧标志名称?
我有一个带有我想重命名的标志名称的 CLI,但我也想这样做,以便此更改向后兼容并且使用旧标志名称仍然有效,如下所示:
我最初的想法是将标志名称别名为新名称,如此处所述。这种方法确实将标志名称更改为新名称,但它不会这样做,因此您也可以使用标志的旧名称。
我已经采取了一种方法来解决这个问题,方法是定义另一个具有相同属性但名称不同的标志,并将速记移动到新标志,如下所示:
然后我将旧名称标志标记为隐藏:
我想知道是否有一种方法可以完成我上面所做的事情而不必定义和支持两个标志?