spf13/cobra

GitHub: spf13/cobra

Go 语言中最流行的 CLI 应用开发框架,帮助开发者快速构建专业级命令行工具。

Stars: 43381 | Forks: 3065

cobra-logo
Cobra 是一个用于创建强大现代 CLI 应用程序的库。 访问 Cobra.dev 获取详细文档 Cobra 被用于许多 Go 项目中,例如 [Kubernetes](https://kubernetes.io/), [Hugo](https://gohugo.io) 和 [GitHub CLI](https://github.com/cli/cli), 仅举几例。[此列表](site/content/projects_using_cobra.md) 包含了使用 Cobra 的更广泛的项目列表。 [![](https://img.shields.io/github/actions/workflow/status/spf13/cobra/test.yml?branch=main&longCache=true&label=Test&logo=github%20actions&logoColor=fff)](https://github.com/spf13/cobra/actions?query=workflow%3ATest) [![Go Reference](https://pkg.go.dev/badge/github.com/spf13/cobra.svg)](https://pkg.go.dev/github.com/spf13/cobra) [![Go Report Card](https://goreportcard.com/badge/github.com/spf13/cobra)](https://goreportcard.com/report/github.com/spf13/cobra) [![Slack](https://img.shields.io/badge/Slack-cobra-brightgreen)](https://gophers.slack.com/archives/CD3LP1199)
Supported by:

Warp sponsorship # 概述 Cobra 是一个库,提供了一个简单的接口来创建强大的现代 CLI 接口,类似于 git 和 go 工具。 Cobra 提供: * 基于子命令的简易 CLI:`app server`、`app fetch` 等。 * 完全符合 POSIX 标准的标志(包括短选项和长选项版本) * 嵌套子命令 * 全局、本地和层叠标志 * 智能建议(`app srver`... 您是指 `app server` 吗?) * 为命令和标志自动生成帮助信息 * 子命令的分组帮助 * 自动识别 `-h`、`--help` 等帮助标志 * 为您的应用程序自动生成 shell 自动补全(bash, zsh, fish, powershell) * 为您的应用程序自动生成 man 手册页 * 命令别名,因此您可以在不破坏它们的情况下进行更改 * 定义您自己的帮助、用法等的灵活性 * 可选与 [viper](https://github.com/spf13/viper) 无缝集成以实现 12-factor 应用 # 概念 Cobra 建立在命令、参数和标志的结构之上。 **命令** 代表动作,**参数** 代表事物,**标志** 是这些动作的修饰符。 最好的应用程序在使用时读起来像句子,因此, 用户直观地知道如何与它们交互。 遵循的模式是 `APPNAME VERB NOUN --ADJECTIVE` 或者 `APPNAME COMMAND ARG --FLAG`。 一些很好的现实世界示例可以更好地说明这一点。 在下面的示例中,'server' 是一个命令,'port' 是一个标志: ``` hugo server --port=1313 ``` 在这个命令中,我们告诉 Git 以 bare(裸)模式 clone(克隆)url。 ``` git clone URL --bare ``` ## 命令 命令是应用程序的中心点。应用程序支持的 每次交互都将包含在一个命令中。一个命令可以 拥有子命令并选择性地运行一个动作。 在上面的示例中,'server' 是命令。 [更多关于 cobra.Command 的信息](https://pkg.go.dev/github.com/spf13/cobra#Command) ## 标志 标志是一种修改命令行为的方式。Cobra 支持 完全符合 POSIX 标准的标志以及 Go [flag package](https://golang.org/pkg/flag/)。 一个 Cobra 命令可以定义持久保留到子命令的标志 以及仅对该命令可用的标志。 在上面的示例中,'port' 是标志。 标志功能由 [pflag library](https://github.com/spf13/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 生成器的完整详细信息,请阅读 [The Cobra Generator README](https://github.com/spf13/cobra-cli/blob/main/README.md) 有关使用 Cobra 库的完整详细信息,请阅读 [The Cobra User Guide](site/content/user_guide.md)。 # 许可证 Cobra 是在 Apache 2.0 许可证下发布的。请参阅 [LICENSE.txt](LICENSE.txt)
标签:CLI, Cobra, DNS解析, EVTX分析, Flag解析, Github CLI, Go, Golang, Hugo, POSIX标准, Ruby工具, WiFi技术, 交互式命令, 参数解析, 后端开发, 命令行界面, 子命令, 安全编程, 库, 应急响应, 开发库, 开源项目, 数据管道, 日志审计, 脚手架, 自动化帮助, 自动补全, 软件工程