问题标签 [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 CMD 没有完全执行
我有下面的代码,真的很简单。关键是第一个 fmt.Println 之后的代码永远不会执行。知道为什么吗?
该代码创建一个随机字符串,然后创建一个 Gin 路由器。执行路由器的代码永远不会运行。
go - 如何在命令行界面中存储会话
我正在尝试基于 cobra 包在 Go 中设计一个命令行界面,该包模仿用户界面中可用的功能。当用户在一个命令中提供用于登录的初始凭据然后他执行下一组命令时,我遇到了一个问题。在这种情况下,我要么需要存储不安全的凭据,要么需要存储我创建的会话对象,但现在确定如何存储会话对象,因为程序不是经常运行的。
node.js - 将数据访问和业务逻辑移至 CLI 并在 graphql 服务器中使用
哦!我是一个小团队的后端,主要在 postgres/nodejs/apollo graphql/react 堆栈中构建应用程序。
在我的爱好项目中,我使用 golang,并且在使用 cobra/viper 构建 CLI 应用程序方面做得很好。我开始尝试将所有关键业务逻辑和数据访问转移到使用 golang 构建并作为二进制文件分发的可重用小型 CLI 应用程序中。我设想这些 cli 的输出可以生成机器可读的 json。
然后,nodejs graphql 服务器将成为 CLI 二进制文件的更浅层包装器,并使用类似的东西调用 const { stdout, stderr } = await exec('<<MY CLI --here >>');
将业务逻辑和数据访问分离到 CLI 中对我来说很有吸引力,因为它在非服务器场景中的可重用性。此外,我真的很喜欢在 go 中编写而不是 node。这似乎是一个不错的主意,但也许我忽略了这种方法的一些陷阱?有人采取过这样的方法吗?
go - 如何在我的 CLI 中获取用户选择的标志
我已经指定了一些标志,如下所示:
一旦我使用这些来知道在使用我的 API 时要删除什么,有没有办法获得我的用户选择的标志值?
go - 使用 Viper 设置 Cobra 标志的默认值
我正在使用 Go 开发一个基于 Cobra 的应用程序,对于我的一个命令,我正在定义一个这样的标志:
我还在我的根命令中设置了一个 Viper,它从文件中读取一些配置。有没有办法用 Viper 设置标志的默认值?我试过这个:
但似乎这不是方法,因为如果我在调用命令时省略标志,我会得到一个空字符串。有任何想法吗?提前致谢!
go - 如何在眼镜蛇中设置以 -- 为前缀的命令名称
我想创建一个名为 --list 的命令,但如果我将 --list 设置为 cobra.Command 的 Use 属性,它就不起作用。像下面的代码不起作用。有什么帮助吗?
go - 如何在 Cobra 的子命令上调用 SetOut()?
我正在尝试测试用 Cobra 编写的 CLI 应用程序,特别是测试子命令是否正确写入 STDOUT。为此,我尝试将输出从 STDOUT 重定向到我的缓冲区。不幸的是,无论出于何种原因,SetOut() 函数在通过调用 Commands() 获得的子命令上的行为都不像预期的那样。
如何在 Cobra 的子命令上正确调用 SetOut()?
这是我的代码:
这是测试输出:
go - 使用 Logs 或 cobra.Command Println 获取用户反馈?
Spf13/cobra 命令提供了许多优雅的工具来向用户提供反馈。我有更多使用 Python/headless 服务的经验,其中标准是使用日志库,然后在必要时重定向到 stdio。
然而,我对眼镜蛇的探索越多,感觉这条路就走错了。相反,我觉得我应该通过 cobra 发送所有内容,并从该缓冲区中挑选应该记录的内容。
这里有任何惯用的指导吗?
go - 如何从 Cobra 根命令内部运行子命令
我有一个 Go Cobra CLI 应用程序,我想在没有任何子命令的情况下运行 root 命令时基于用户输入在无限循环中运行子命令。
myapp
有 3 个子命令;list
,delete
和create
. 通常,Cobra 应用程序通过运行myapp list [args]
等方式工作,但我希望能够运行myapp
并呈现一个接受列表、删除和创建的界面,而无需myapp
.
所以而不是:
这将是:
我可以在执行 root 命令时运行一个循环并接受字符串输入并运行相应的命令,但是还有更多命令,这是复制 cobra 中已经存在的功能的大量额外工作。
这是眼镜蛇rootCmd
:
有没有好的方法来做到这一点?