Cobra既是一个用于创建强大的现代CLI应用程序的库,也是一个用于生成应用程序和命令文件的程序。
Cobra被用于许多Go项目中,如Kubernetes、Hugo和Github CLI等等。
等。这个列表包含一个更广泛的使用Cobra的项目列表。
GoDoc | Go Report Card | Slack
概述
Cobra是一个库,提供了一个简单的接口来创建强大的现代CLI
界面,类似于git和go工具。
Cobra也是一个应用程序,它将生成你的应用程序脚手架,以快速
开发一个基于Cobra的应用程序。
Cobra提供了。
- 简单的基于子命令的CLI:
app server
,app fetch
,等等。 - 完全符合POSIX标准的标志(包括短和长的版本)
- 嵌套的子命令
- 全局、局部和级联标志
- 使用 "cobra init "和 "cobra add cmdname "轻松生成应用程序和命令。
- 智能建议(
app srver
...你是说app server
吗?) - 自动生成命令和标志的帮助
- 自动识别 "h"、"--help "等帮助标志。
- 为你的应用程序自动生成shell自动完成(bash, zsh, fish, powershell)。
- 为你的应用程序自动生成man页
- 命令别名,所以你可以在不破坏它们的情况下改变事情
- 灵活地定义你自己的帮助、用法等。
- 可选的与viper无缝集成,用于12个因素的应用程序。
概念
Cobra是建立在一个由命令、参数和标志组成的结构上。
命令代表动作,参数是事物,而标志是这些动作的修饰语。
最好的应用程序在使用时读起来就像句子一样,因此,用户可以直观地知道如何与之互动。
直观地知道如何与它们互动。
要遵循的模式是
APPNAME VERB NOUN --ADJECTIVE.
。
或
APPNAME COMMAND ARG --FLAG
。
几个好的现实世界的例子可以更好地说明这一点。
在下面的例子中,'server'是一个命令,'port'是一个标志。
hugo server --port=1313
在这个命令中,我们告诉Git要克隆裸露的URL。
git clone URL --bare
命令
命令是应用程序的中心点。应用程序所支持的每个交互
都会包含在一个命令中。一个命令可以
有子命令,也可以选择运行一个动作。
在上面的例子中,'server'是命令。
标志
标志是一种修改命令行为的方法。Cobra支持
和Go的flag包一样,支持完全符合POSIX标准的标志。
一个Cobra命令可以定义持续存在于子命令中的标志
和只对该命令有效的标志。
在上面的例子中,'port'是一个标志。
标志功能是由pflag库提供,它是标志标准库的一个分叉
的分叉,它保持了相同的接口,同时增加了 POSIX 的兼容性。
安装
使用Cobra很容易。首先,使用go get
安装最新版本的
库的最新版本。这个命令将安装cobra
生成器可执行文件
以及库和它的依赖项。
go get -u github.com/spf13/cobra
接下来,在你的应用程序中包含Cobra。
import "github.com/spf13/cobra"
用法
Cobra提供了自己的程序,它将创建你的应用程序并添加任何你想要的
你想要的命令。这是将Cobra纳入你的应用程序的最简单方法。
关于使用Cobra生成器的完整细节,请阅读The Cobra Generator README
关于使用Cobra库的完整细节,请阅读The Cobra User Guide。
许可证
Cobra是在Apache 2.0许可下发布的。参见LICENSE.txt