Cobra快速入门

Cobra(Go的CLI应用框架)

什么是Cobra

​ Cobra 是 Go 的 CLI 框架。它包含一个用于创建功能强大的现代 CLI 应用程序的库和一个用于快速生成基于 Cobra 的应用程序和命令文件的工具。它是由 Go 团队成员 spf13hugo创建的,已被最受欢迎的 Go 项目采用。

Cobra功能

  • 简单的基于子命令的 CLI:app server app fetch
  • 嵌套子命令
  • 自动帮助标志识别 -h --help
  • 全局、本地、级联标志
  • 应用程序自动生成bash
  • viper可紧密集成。
  • ...

安装Cobra

​ 安装Cobra是非常简单的,我们只需要在自己的Go模块下,执行以下命令便可直接使用Corbra


// 安装Corba
go  get  -u  github.com/spf13/cobra/cobra

​ 在使用过程中,你只需要导入使用以下命令导入Cobra的源码包,即可直接使用Cobra的功能来进行自定义开发


// 导入源码包
import " github.com/spf13/cobra"

Cobra常用命令

Cobra为了能让我们更加快速的构建自己的Cli工具,提供了一些快捷构建的命令。

  1. 创建命令程序应用 cobra init
  2. 添加命令 cobra add version

命令的组成结构

​ 开发一个自定义的命令行应用之前,我们需要了解一个命令的基本组成结构 ,一个命令的基本组成结构如下所示。

  1. 命令Commands 执行动作

  2. 参数Args执行参数

  3. 标志Flags表示对动作的修饰

    下面我们通过一些命令来更快的理解命令的组成结构

# git克隆命令
git clone URL --bare
  1. git(命令):跟命令,一般为应用程序的名字
  2. clone(命令):是git下的一个子命令
  3. URL(参数):这里泛指git需要clone的地址
  4. --bare(标志):这里泛指使用什么方式进行克隆

拓展点:Cobra中的标志,有持久标志本地标志两种标志。

  1. 持久标志:即在该命令Commands应用程序中所有的标志都可以使用。
  2. 本地标志:只能在特定的命令Commands 中使用。
// 绑定到持久标志
RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra_exp1.yaml)")

// 绑定本地标志
RootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")

Cobra实战

一、初始化go moudle模块

二、切换到初始化的模块下,安装cobra

go get -u github.com/spf13/cobra/cobra

三、配置cobra的环境变量,更具自己操作系统酌情配置即可

四、初始化项目

# 初始化完成我们可看到如下的目录结构
cobra init cobra-demo --pkg-name github.com/xcbeyond/cobra-demo
# 打开初始化选择的目录

├── cmd
│   ├── root.go
├── go.mod
├── go.sum
└── main.go

五、打包应用程序

# 打包go应用程序
go build

# 打包完成后会生成可执行文件,该文件即是我们的命令行工具

六、添加命令

# 向应用程序中添加子命令
cobra add version

#查看目录结构(多了version.go文件)
├── cmd
│   ├── root.go
│   ├── versiongo
├── go.mod
├── go.sum
└── main.go

#添加完成后重新打包,即可使用如下命令
cobra-demo version

Cobra文档

Cobra的更多高级特性可参考文档

posted @ 2022-11-27 10:32  橘子有点甜  阅读(452)  评论(0编辑  收藏  举报