概述
Cobra 是一个用于创建强大的现代CLI应用程序库,也是用于生成应用程序和命令文件的程序。
Cobra被用在许多Go项目中,如Kubennetes,Hugo和Gihub CLI等等。这个列表包含使用Cobra的更广泛的项目列表。
About
Go现代命令行交互的指令
Table of Contents
Overview
Cobra 是一个库,提供一个创建现代的强大CLI接口,类似于git & go tools。
Cobra也是一个应用程序,它将生成你的应用程序脚手架,以快速开发一个基于Cobra的应用程序。
Cobra 提供:
- 简单的基于子命令行模式: app server, app fetch,ext。
- 完全兼容POSIX (包含 短、长版本)
- 嵌套子命令
- 全局、本地和串联flags
- 使用 cobra init appname 和 cobra add cmdname轻松生成应用程序和命名
- 智能建议(app srver… 你的意思是 app server?)
- 自动帮助命令和flags的生成
- 自动帮助flag识别 -h 、—help、etc
- 自动生成的shell自动完成你的应用程序(bash zsh fish powershell)
- 为你的应用程序自动生成的帮助页
- 命令别名,所以你可以在不破坏他们的情况下更改内容
- 灵活定义 help usage ext
- 可选与viper 紧密集成的 12-factor 应用
Concepts
Cobra 是建立在一个命令 参数 flags的结构之上。
Commands 代表动作,Args是事物,Flags是这些操作的修饰符。
当使用时,最好的应用程序读起来像是理解句子,因此用户直观地了解他们之间怎样交互。
遵循的模式是 APPNAME VERB NOUN —ADJECTIVE。或 APPNAME COMMAND ARG —FLAG。
现实中的例子更好地阐述这些观点。
下面的例子中,’server’是一个 command,’prot’是一个flag:
hugo server --port=1313
在Command中我们告诉git要去clone 地址。
git clone URL --bare
Commands
Command 是应用程序的核心点。应用程序支持的每个交互包含在一个Command中。一个Command可以有子命令,也可以有选择地运行一个操作。
在上面的例子中,’server’是Command。
更多关于cobra.Command
Flags
flag是一种修改command行为的方法。Cobra支持完全兼容POSIX以及Go flag package。Cobra命令可以定义持久化到子命令的标志,以及仅对该命令可用的标志。
在上面的例子只用,’port’是flag。
Flag功能由pflag libray提供,当添加POSIX标准 flag标准库分支维护相同的接口。
Installing
使用Cobra是简单的。首先,用 go get 安装最新版本库。这个命令将安装可执行的cobra generator 以及库及其依赖项:
go get -u github.com/spf13/cobra
下一步,在你的应用程序包含Cobra:
import "github.com/spf13/cobra"
Getting Started
虽然欢迎你提供自己的组织结构,通过 基于cobra 应用程序按照下面的组织结构:
▾ appName/
▾ cmd/
add.go
your.go
commands.go
here.go
main.go
在cobra应用中,典型的main.go文件是很空的。只有一个目的:初始化 cobra。
package main
import (
"{pathToYourApp}/cmd"
)
func main() {
cmd.Execute()
}
Using the Cobra Generator
cobra 提供了自己的程序,可以创建应用程序并添加你想要的任何命令。很容易地集成到你的应用程序中去。
这可以找到关于它的更多信息。