问题标签 [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 - 带有 cobra 和 viper 的配置文件
基本信息:我创建了一个 go 应用程序并使用了 Cobra。Cobra 将 Viper 用于命令行参数和标志。
我有一个带有标志绑定的命令监听,我想在 yaml 文件中配置它。
代码:
listen 命令的 init 函数如下所示:
我的应用程序代码位于https://github.com/sascha-andres/go-logsink
问题:
当我调用应用程序listen --bind "bla"
并将标志正确设置为 时bla
,但我还没有找到使用位于我的主目录中的 YAML 文件来实现此目的的方法。
配置文件尝试:
和
在这两种情况下,都找到了配置文件,但标志不是预期值而是默认值。
如何编写配置文件才能正确填充标志?
go - 如何在 Go 中使用 cobra 库在一行中接受输入
我正在使用 cobra 用 go 语言编写代码,目前我给出的输入是:
在这些熟悉 cobra 的人中,Calc 是我的项目,add 是我使用的命令,我希望输入为Calc add N2 2 4
(在单行中)并显示输出,其中 N 是标识输入的数量和 2 4 是要添加的数字。
添加命令的代码:
磷
go - 使用 cobra 命令实现 Go 接口
我编写了一个程序来使用 Go 语言中的接口计算基本算术函数。
我想用 COBRA 命令做同样的事情。这是一些使用接口的 Go 代码。
我还使用cobra
没有接口的命令实现了算术函数。
这是使用 cobra 命令而不使用接口概念的添加,我想使用 cobra 命令实现相同的功能。
有人可以帮助我解决界面和眼镜蛇命令吗?
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 软件包是旧版本,但在我的情况下没有单独安装该软件包,则可能会发生这种情况。知道我在做什么错吗?提前致谢!
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"
go - 即使进程结束也缓存或保留一个值
在 GoLang 中编写 CLI 应用程序并希望在不同的会话/命令中使用 URL。通过 Cobra 实现 CLI,我想在开始时配置 URL,然后在其他命令中继续使用它。
尝试使用以下方法 -
os.Setenv("URL", URL)
os.Getenv("URL")
上述方法仅适用于同一进程(如果 set 和 get 进程不同则不起作用)。
知道我们该怎么做吗?
更新:我想知道是否可以在 Go 中完成?我知道可以通过将其存储在 file/db 中,甚至在环境变量中设置,但探索在 Go 中实现它的方法来轻松完成。
go - 如何在 cobra 命令中调用默认的 helpCommand?
在下面的代码中,我定义了一个命令,其中可能有两个选项: 1. myapp info --flag1 text 2. myapp info --flag2 如果没有指定两个选项,我想显示 helpCommand
在 cobra README中,对 helpCommand 的用法进行了说明,例如
myapp help info
ormyapp info --help
或,myapp info --nonexistentoption
但没有说明如何实际调用该方法。任何指针?
go - 对于某些 Cobra 命令,如何将一些全局持久性标志标记为隐藏
我正在用 Cobra 开发一些 CLI 实用程序。对于我来说RootCmd
,我设置了一些持久性标志(即也影响所有命令的标志)。但是有些命令不使用这些标志,所以我想让它们对这些特定命令隐藏,这样这些标志就不会用myutil help mycmd
or显示myutil mycmd --help
。
下面的代码片段完成了这项工作,但对我来说它有点难看而且很难维护:
有没有更好的方法来隐藏某些命令的一些全局持久标志?
go - 没有参数匹配的golang cobra子命令
我想用cobra创建 golang CLI 。目前,它运行良好。我创造了类似的东西foobar create --username johndoe
。但我需要像foobar create user --username johndoe
. 有user
子命令。
我创建了参数匹配,
但我认为有一种更好的方法可以使用 cobra 而不是使用像这样匹配的参数。有什么建议吗?
go - 如何使用 cobra 在 Go CLI 中创建所需的子命令
我正在使用Cobra为我的应用程序更新一些 cli。我想让这个命令成为必需的,这意味着如果应用程序找不到它正在寻找的参数,它应该会失败。
主包是
现在,如果我在没有任何环境的情况下将其作为 ./myApp 运行,它不会抱怨它。但是,如果我在 myapp 之后使用 env ,那么它会激活该功能并运行所有验证。