一架梯子,一头程序猿,仰望星空!
Go Cobra教程 > 内容正文

Go Cobra框架介绍


logo.png

Cobra是一个Go语言的CLI框架。它包含一个用于创建功能强大的现代CLI应用程序的库,以及一个用于快速生成基于Cobra的应用程序和命令文件的工具。

Cobra提供的功能:

  • 简单的基于子命令的CLI:app serverapp fetch等。
  • 完全符合POSIX标准的标志(包括短标志和长标志)
  • 嵌套子命令
  • 全局、局部和级联标志
  • 使用cobra init appnamecobra add cmdname轻松生成应用程序和命令
  • 智能建议(app srver… 你是不是想说app server?)
  • 自动为命令和标志生成帮助信息
  • 自动识别-h--help等帮助标志
  • 自动为应用程序生成bash自动补全
  • 自动为应用程序生成man页面
  • 命令别名,方便更改而不会破坏其它功能
  • 可以灵活定义自己的帮助信息、用法等
  • 可选与viper集成

Cobra概念

Cobra应用由命令(Commands )、参数(Args )和标志(Flags )组成。

命令代表操作,标志是对这些操作的修饰符。

最好的应用程序在使用时会像句子一样读起来。用户会知道如何使用应用程序,因为它们本能地了解如何使用它。

遵循的模式是APPNAME VERB NOUN --ADJECTIVE.APPNAME COMMAND ARG --FLAG

在下面的例子中,’server’是一个命令,’port’是一个标志:

hugo server --port=1313

在这个命令中,我们告诉Git克隆URL并以bare模式进行操作。

git clone URL --bare

命令(Commands)介绍

命令是应用程序的功能。应用程序支持的每个交互都将包含在一个命令中。一个命令可以有子命令,并可选择运行一个操作。

在上面的例子中,’server’是该命令。

标志(flag)

标志是修改命令行行为的一种方式(其实就是命令参数)。Cobra支持完全符合POSIX标准的标志,以及Go的flag包。Cobra命令可以定义传递给子命令的标志,以及仅对该命令可用的标志。

在上面的例子中,’port’是一个标志。

标志的功能由pflag库提供,它是标志标准库的一个分支,保持相同的接口并添加了POSIX兼容性。