问题标签 [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 投票
4 回答
600 浏览

bash - 如何将 Go cmd 应用程序提供为高效应用程序

我正在创建以下存储库,它使用 Go 命令行工具cobra 生成一些工件,同时运行 go run main.go mzr convert toJSON ./程序获取 yaml 文件并从它生成 json 文件的命令。

现在我希望我的 repo 的行为类似于以下命令行工具(用户可以安装它并运行帮助并使用工具支持的命令)

https://github.com/golang/dep

当用户运行时,用户将能够安装mzr并且能够像在存储库中一样在内部运行命令,在我的情况下,用户应该运行depdep init

mzr convert toJSON path/to/yaml/

这是我的存储库

https://github.com/NinaWatcher/mzr

file.yaml在根目录内部(以及仅用于测试的输出 json),但用户应提供文件的路径。

逻辑在文件中:cmd/commands/convert.go

我尝试通过创建 make.sh 文件(请参阅构建文件夹中的结果)来为多个操作系统创建可执行文件,但是当我获取文件并尝试在mac 和 windows上运行它时它也不起作用,我应该怎么做在这里做吗?

0 投票
1 回答
445 浏览

shell - 如何为 go bin 提供命令

我使用以下代码创建命令,该命令应根据从 cli 传递的一些标志运行。

我使用眼镜蛇回购 https://github.com/spf13/cobra

当我运行它时go run main.go echo test

我明白了

Print: test

哪个有效。

现在我运行go install打开 bin 目录并单击文件newApp(这是我的应用程序的名称)

它打印

而且我不能使用我在本地运行它时能够使用的任何命令(如)MZR echogo run main.go echo test

但我想像 下面 MZR -h这样使用它, 或者MZR echo,我该怎么做?(并将之后创建的 bin 中的文件提供给我的朋友go install- 这是Unix executable - 3.8 MB

例如,像这个使用相同命令行工具并运行它的 repo,你使用hoarder --server https://github.com/nanopack/hoarder

这是例如代码(使其更简单)

0 投票
3 回答
5620 浏览

go - Cobra Subcommand Invoke Help By Default

I want sub command to print out the Help menu if no argument or flags is passed (The main command does this by default).

For example, the main command without any arguments or flags:

I want subcommand like "tk addon" to also return it's own help menu if no arguments or flags is entered, currently it only gives a blank line.

addon code :

0 投票
1 回答
56 浏览

go - 如何提取注册信息?

我在我的 Golang 应用程序中使用 cobra。如何获取我在 Cobra 注册的命令和值的列表。

如果我添加一个 root 命令,然后添加一个 DisplayName 命令。

通过使用一些 Cobra 函数,我能否从我的程序中知道 Name 中的值是什么?理想情况下,我想在 Name 中访问此值并将其用于检查某些逻辑。

0 投票
1 回答
3809 浏览

testing - Cobra:如何在测试中以编程方式设置标志

我正在使用cobra构建 CLI 并希望模拟使用不同选项/标志集运行的命令。我一直试图弄清楚如何使用 cobra API 在我的测试中设置标志,但还没有真正得到它。

我有这个:

到目前为止,我发现的最接近的是:

cmd.Flags().Set(name string, value string)

...但这似乎不对,因为虽然标志的名称都是字符串,但它们并不都将字符串作为值。int即使我有一个标志并通过它似乎也不起作用string(1)

我在这里缺少一些简单的东西吗?

0 投票
2 回答
1406 浏览

go - 从单独的命令/进程共享属性

我提供带有几个命令和子命令的命令行工具,我使用cobra命令行,我有两个单独的命令 ,首先是其他命令的先决条件

例如,第一个命令是通过创建临时文件夹并验证某些文件来首选环境

第二个命令应该从第一个命令中获取一些属性

用户应该像这样执行它

btr 准备
btr 运行

执行时,run command它应该从prepare命令结果中获取一些数据

更新

好吧,下面的答案确实没有帮助。我需要在本地和云环境中的两个命令之间共享状态),如果我从调用 1 个命令的 shell 脚本运行命令行命令,然后调用需要从第一个命令,我需要 E2E解决方案和我的上下文中的代码实例

更新 2

假设我知道我需要配置文件(json),

我应该在哪里创建它(路径)?

什么时候清洗呢?

如果我使用 1file 我应该如何验证以存储与特定流程相关的数据并在需要时获取其他流程数据(guid)?

可以说我的配置如下

0 投票
2 回答
1002 浏览

go - Cobra 允许的标志值

在 Cobra 库中,是否有内置工具(如果有,我该如何使用它?)要求标志是多个值之一,如果标志不是允许的值之一,则会引发错误?我在 Github 页面上没有看到这个。

0 投票
1 回答
5524 浏览

go - 如何将 viper 配置解组为带有破折号字符的结构

我将以下配置文件定义为 toml 文件:

然后,我有这个结构

请注意,我的 ConfigureOpts 字段名格式与配置文件中定义的格式不同。

我试过这段代码,但失败了

这是输出

0 投票
1 回答
2200 浏览

go - 如何将 Viper 配置值正确解组为包含字符串数组的结构?

我注意到,当 viper 尝试解组为结构时,这可能是一个错误。为了更好地解释它,请考虑一下:

我有一个如下的cli命令 dd-cli submit-bug --name "Bug 1" --tag reason1 --tag reason2

这是我的命令行源代码

我运行这个命令:

输出如下

我希望viper.Unmarshall()将正确地省略[for submitBugOpts.ReasonTags [0]并省略]for submitBugOpts.ReasonTags[1]。所以 submitBugOpts.ReasonTags 的期望值不包含任何[and ]

任何指针如何解决这个问题?我已经在 viper repo 上提交了这个问题:https ://github.com/spf13/viper/issues/527 。但是,我要问的是,以防万一你们也知道如何处理这个问题。

0 投票
1 回答
747 浏览

bash - 使用远程数据完成 Cobra 标志 bash

我正在开发一个基于Cobra的 Go 应用程序,我希望对命令行标志进行 bash 补全:

--some-id可以通过一些 HTTP 调用获得 flag 的有效值列表。如何使用 Cobra 使这种 bash 完成可用?