问题标签 [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.

0 投票
0 回答
116 浏览

go - 基于 Cobra 的 CLI 中的 OnInitialize 与 PersistentPreRun

我正在为 Go 使用Cobra库。自述文件显示了一个通过该cobra.OnInitialize函数处理配置设置的示例。的文档OnInitialize说:

OnInitialize 将传递的函数设置为在调用每个命令的 Execute 方法时运行。

PersistentPreRun但这与在 root 命令上注册一个函数不完全一样吗?Execute这也将在任何命令的方法之前运行。

0 投票
1 回答
55 浏览

macos - 为什么眼镜蛇自动完成功能不起作用?

我有以下 cobra cli 示例,我正在尝试使自动完成功能在我的 mac 上工作。 https://github.com/dharmeshkakadia/cobra-example

如果我将它编译成一个名为“say”的二进制文件,自动完成工作如果我将它编译成任何其他名称,它将无法工作是否有一些 mac 政策?我的 macos 版本是 Big Sur 11.6

谢谢

0 投票
1 回答
48 浏览

go - 在 Go 中使用 Cobra 和 Viper 配置默认目录路径

我希望我的 CLI 应用程序的用户输入他们要保存文件的特定路径。我尝试使用 Cobra 的 --config 标志,但我不知道如何使用。

例子:

我怎么能这样做?

0 投票
1 回答
365 浏览

go - 如何在 vscode 中调试 golang cobra cli 应用程序

我有一个 golang cobra cli 应用程序。已配置我的 vscode 进行调试。我想为我的应用程序使用 vscode 调试特定命令。

我正在使用这个 launch.json

如果我选择 main.go 并开始调试,它只会打印我的命令的帮助。如何在 vscode 中调试特定的 cli 子命令?比如说 abc create 或 abc version

如果我选择一个子命令包然后调试它说:启动失败:无法启动进程:不是可执行文件

0 投票
1 回答
52 浏览

go - PreRun / PreRunE 钩子未在 cobra 中执行

我有一个cobra命令

和一个子命令

PreRun但是,当参数传递出现错误时,我没有看到正在执行的钩子。

在上述情况下,mysubcommand只需要一个参数,因此在没有它的情况下调用它时:

FWIW 我想做的是打印一个更优雅和信息丰富的消息,以防参数计数错误。

PreRunE代替使用时的情况也是一样PreRun

0 投票
0 回答
231 浏览

go - 在 Go CLI 中使用 Cobra 和 Viper

我在 Go 中创建了一个 CLI,我决定同时使用 Cobra 和 Viper 来解析 cli 参数和配置文件。

我到处寻找一种同时使用cobraviper合并配置文件和给定 CLI 参数的方法。

我偶然发现了毒蛇毒刺*cobra.Command作为使用标志的一种方式,并使用cobra.

这个实现的问题是它强制配置键与命令参数具有相同的名称。它也不允许我在配置文件中有更多的配置选项。

我也发现了这个 Github 问题。除了 CLI 标志之外,这似乎也不允许我进行自定义配置。

没有找到合适的解决方案,我选择了“肮脏”的路线,并决定使用 cmd 标志创建一个配置实例,viper然后使用github.com/imdario/mergo.

一个简化的例子:

显然,这种实现存在问题,所以我想知道是否有人知道使用cobraand的更好方法viper

0 投票
0 回答
50 浏览

go - 在不运行 init() 的情况下在 golang 中获得跨包覆盖

我继承了一个非常大、非常古老的 golang 代码库。我正在尝试获取覆盖率统计信息,并且大多数测试都在跨包进行测试。

如果我运行go test ./...测试通过。

如果我运行go test -coverpkg=./... ./...,则测试失败,因为所有init()功能都在测试期间执行。(它在一堆甚至没有测试的 cobra cmd 中失败了)。init()导致测试失败的行为。

有没有办法让 init() 在收集覆盖率时不会发生,就像正常的测试运行一样?

0 投票
1 回答
233 浏览

json - 如何提供 JSON 数组作为 cobra cli 的参数

我正在使用 Go 和 Cobra 库构建 CLI。我有以下需要在相应结构中反序列化的 JSON。参数为 JSON 数组:

结构

我正在使用 CobraStringSicceVarP如下

但是 cobra 正在将传入的 json 作为一个字符串读取,[(stringA, stringB), stringC]而我希望数组的长度为 2,例如 StringArray[0]:(stringA, stringB)和 StringArray[1]: stringC

我不能使用它,StringSliceVarP因为它会根据,我不想要的拆分,因为我的数组字符串本身可能有一个,.

我怎样才能做到这一点?

0 投票
1 回答
43 浏览

go - 眼镜蛇未能按要求标记标志

我在 a 中添加了以下标志cobra.Cmd

在哪里

这可以按预期工作,但是当尝试根据需要制作上述标志时,该过程会失败

-a/--application按预期工作,它也打印在我的帮助中

为什么没有按要求设置?

0 投票
1 回答
71 浏览

go-cobra - 为什么 Cobra 标志在此代码中不起作用

如何使用本地标志在 Cobra 中使用标志

错误