【发布时间】:2017-12-29 23:10:17
【问题描述】:
我正在创建以下使用 Go 命令行工具的 repo cobra
生成一些工件,同时运行命令
go run main.go mzr convert toJSON ./ 程序获取 yaml 文件并
从它生成 json 文件。
现在我希望我的 repo 的行为类似于以下命令行工具(用户可以安装它并运行帮助并使用该工具支持的命令)
用户将能够安装 mzr 并能够运行
当用户运行 dep init 时,命令在 dep 存储库中,
在我的情况下,用户应该运行
mzr convert toJSON path/to/yaml/
这是我的仓库
https://github.com/NinaWatcher/mzr
我在根目录中有file.yaml(以及仅用于测试的输出 json),但用户应提供文件的路径。
逻辑在文件里面:cmd/commands/convert.go
我尝试通过创建 make.sh 文件(查看构建文件夹中的结果)来为多个操作系统创建可执行文件 但是当我获取文件并尝试在 n mac 和 windows 上运行它时,它也不起作用,我应该在这里做什么?
【问题讨论】:
-
你期待什么?您的 Cli-App 不需要任何标志或选项,因此只需运行
Action。 -
如果我是正确的,您对二进制名称及其在 PATH 中的可用性和命令行参数 sub command 感到困惑。在此处介绍的当前工作中,路径中有一个名为 greet 的二进制文件。 github.com/urfave/cli#subcommands
-
我想你要找的是Subcommand
-
你不能用这个包做“交互”。做交互式 CLI 这个包比较适合github.com/nsf/termbox-go.
-
您确实需要阅读文档。友好的说 RTFM。为了帮助你更多,运行
go build,生成的二进制文件是独立的,可以复制粘贴。如果您需要将其提供给与您的操作系统不同的人,GOOS=YYY go build,请将生成的二进制文件提供给他。
标签: bash shell go command-line go-cobra