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

go - 带有 cobra 和 viper 的配置文件

基本信息:我创建了一个 go 应用程序并使用了 Cobra。Cobra 将 Viper 用于命令行参数和标志。

我有一个带有标志绑定的命令监听,我想在 yaml 文件中配置它。

代码:

listen 命令的 init 函数如下所示:

我的应用程序代码位于https://github.com/sascha-andres/go-logsink

问题:

当我调用应用程序listen --bind "bla"并将标志正确设置为 时bla,但我还没有找到使用位于我的主目录中的 YAML 文件来实现此目的的方法。

配置文件尝试:

在这两种情况下,都找到了配置文件,但标志不是预期值而是默认值。

如何编写配置文件才能正确填充标志?

0 投票
1 回答
3260 浏览

go - 如何在 Go 中使用 cobra 库在一行中接受输入

我正在使用 cobra 用 go 语言编写代码,目前我给出的输入是:

在这些熟悉 cobra 的人中,Calc 是我的项目,add 是我使用的命令,我希望输入为Calc add N2 2 4(在单行中)并显示输出,其中 N 是标识输入的数量和 2 4 是要添加的数字。

添加命令的代码:

0 投票
0 回答
217 浏览

go - 使用 cobra 命令实现 Go 接口

我编写了一个程序来使用 Go 语言中的接口计算基本算术函数。

我想用 COBRA 命令做同样的事情。这是一些使用接口的 Go 代码

我还使用cobra没有接口的命令实现了算术函数。

这是使用 cobra 命令而不使用接口概念的添加,我想使用 cobra 命令实现相同的功能。

有人可以帮助我解决界面和眼镜蛇命令吗?

0 投票
1 回答
330 浏览

go - 使用 glide 添加 golang cobra 包时出错

我的 glide.yaml 导入部分是

我有

在我的代码中。

但我得到了错误

供应商/github.com/spf13/cobra/command.go:1092:c.lflags.SortFlags 未定义(类型 *pflag.FlagSet 没有字段或方法 SortFlags)
供应商/github.com/spf13/cobra/command.go:1092 : c.Flags().SortFlags undefined (type *pflag.FlagSet has no field or method SortFlags)
vendor/github.com/spf13/cobra/command.go:1240: c.parentsPflags.SortFlags undefined (type *pflag.FlagSet没有字段或方法 SortFlags)

cobra repo 上的几个问题说,如果 pflag 软件包是旧版本,但在我的情况下没有单独安装该软件包,则可能会发生这种情况。知道我在做什么错吗?提前致谢!

0 投票
1 回答
1442 浏览

go - 在 Go w/ Cobra 中创建具有相同名称的子命令

总的来说,我对 Go 很陌生,这是我在 Cobra 的第一个项目。

使用命令行工具在 Cobra 中创建命令似乎很容易:
cobra add <command>

添加子命令似乎也很容易。
cobra add <subcommand> -p '<command>'

我遇到的问题是有两个子命令用于两个不同的命令,但子命令具有相同的名称。例如:

我可能有一个名为“people”的命令和一个名为“places”的命令。
cobra add people
cobra add places

每个命令都需要自己的子命令,称为“add”。
cobra add add -p 'people'
cobra add add -p 'places'

第二个命令将失败,因为它将尝试创建一个已由第一个命令创建的“add.go”文件。是否可以将同名的子命令添加到不同的父命令?最终结果将类似于:
people add --first "bob" --last "smith"
places add "someplace" --zip "12345"

0 投票
1 回答
150 浏览

go - 即使进程结束也缓存或保留一个值

在 GoLang 中编写 CLI 应用程序并希望在不同的会话/命令中使用 URL。通过 Cobra 实现 CLI,我想在开始时配置 URL,然后在其他命令中继续使用它。

尝试使用以下方法 -

os.Setenv("URL", URL) os.Getenv("URL")

上述方法仅适用于同一进程(如果 set 和 get 进程不同则不起作用)。

知道我们该怎么做吗?

更新:我想知道是否可以在 Go 中完成?我知道可以通过将其存储在 file/db 中,甚至在环境变量中设置,但探索在 Go 中实现它的方法来轻松完成。

0 投票
1 回答
416 浏览

go - 如何在 cobra 命令中调用默认的 helpCommand?

在下面的代码中,我定义了一个命令,其中可能有两个选项: 1. myapp info --flag1 text 2. myapp info --flag2 如果没有指定两个选项,我想显示 helpCommand

在 cobra README中,对 helpCommand 的用法进行了说明,例如 myapp help infoormyapp info --help或,myapp info --nonexistentoption但没有说明如何实际调用该方法。任何指针?

0 投票
2 回答
3070 浏览

go - 对于某些 Cobra 命令,如何将一些全局持久性标志标记为隐藏

我正在用 Cobra 开发一些 CLI 实用程序。对于我来说RootCmd,我设置了一些持久性标志(即也影响所有命令的标志)。但是有些命令不使用这些标志,所以我想让它们对这些特定命令隐藏,这样这些标志就不会用myutil help mycmdor显示myutil mycmd --help

下面的代码片段完成了这项工作,但对我来说它有点难看而且很难维护:

有没有更好的方法来隐藏某些命令的一些全局持久标志?

0 投票
2 回答
3817 浏览

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

我想用cobra创建 golang CLI 。目前,它运行良好。我创造了类似的东西foobar create --username johndoe。但我需要像foobar create user --username johndoe. 有user子命令。

我创建了参数匹配,

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

0 投票
2 回答
2540 浏览

go - 如何使用 cobra 在 Go CLI 中创建所需的子命令

我正在使用Cobra为我的应用程序更新一些 cli。我想让这个命令成为必需的,这意味着如果应用程序找不到它正在寻找的参数,它应该会失败。

主包是

现在,如果我在没有任何环境的情况下将其作为 ./myApp 运行,它不会抱怨它。但是,如果我在 myapp 之后使用 env ,那么它会激活该功能并运行所有验证。