Cobra 是一个用于创建强大的现代命令行界面应用程序的库。
Cobra 被许多 Go 项目使用,如 Kubernetes、Hugo 和 GitHub CLI 等。这个列表 包含了更多使用 Cobra 的项目。
概览
Cobra 是一个提供简单接口的库,用于创建类似 git 和 go 工具的强大现代命令行界面。
Cobra 提供:
- 简单的基于子命令的命令行界面:
app server
、app fetch
等 - 完全符合 POSIX 标准的标志(包括短版本和长版本)
- 嵌套子命令
- 全局、本地和级联标志
- 智能建议(
app srver
... 你是指app server
吗?) - 自动生成命令和标志的帮助信息
- 子命令帮助信息分组
- 自动识别帮助标志
-h
、--help
等 - 自动为应用程序生成 shell 自动完成(bash、zsh、fish、powershell)
- 自动为应用程序生成手册页
- 命令别名,让你可以在不破坏现有功能的情况下进行更改
- 灵活定义自己的帮助、用法等
- 可选的与 viper 无缝集成,支持 12-factor 应用
概念
Cobra 建立在命令、参数和标志的结构之上。
命令代表动作,参数是事物,标志是这些动作的修饰符。
最好的应用程序在使用时读起来像句子,因此用户能够直观地知道如何与它们交互。
遵循的模式是
应用名称 动词 名词 --形容词
或
应用名称 命令 参数 --标志
。
一些真实世界的例子可能更好地说明这一点。
在下面的例子中,'server' 是一个命令,'port' 是一个标志:
hugo server --port=1313
在这个命令中,我们告诉 Git 以裸仓库方式克隆 URL。
git clone URL --bare
命令
命令是应用程序的核心。应用程序支持的每个交互都将包含在一个命令中。一个命令可以有子命令,并可选择执行一个动作。
在上面的例子中,'server' 是命令。
标志
标志是一种修改命令行为的方式。Cobra 支持完全符合 POSIX 标准的标志以及 Go flag 包。Cobra 命令可以定义持续到子命令的标志,以及仅对该命令可用的标志。
在上面的例子中,'port' 是标志。
标志功能由 pflag 库 提供,这是标准库 flag 的一个分支,保持相同的接口同时增加了 POSIX 兼容性。
安装
使用 Cobra 很简单。首先,使用 go get
安装最新版本的库。
go get -u github.com/spf13/cobra@latest
然后,在你的应用程序中引入 Cobra:
import "github.com/spf13/cobra"
使用
cobra-cli
是一个用于生成 cobra 应用程序和命令文件的命令行程序。它将引导你的应用程序脚手架,以快速开发基于 Cobra 的应用程序。这是将 Cobra 集成到你的应用程序中的最简单方法。
可以通过运行以下命令安装:
go install github.com/spf13/cobra-cli@latest
有关使用 Cobra-CLI 生成器的完整详细信息,请阅读 Cobra 生成器 README
有关使用 Cobra 库的完整详细信息,请阅读 Cobra 用户指南。
许可证
Cobra 在 Apache 2.0 许可下发布。查看 LICENSE.txt