首页 > 其他分享 >Cobra快速入门

Cobra快速入门

时间:2022-11-27 10:46:37浏览次数:68  
标签:标志 Cobra 入门 cobra 应用程序 命令 go 快速

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的更多高级特性可参考文档

标签:标志,Cobra,入门,cobra,应用程序,命令,go,快速
From: https://www.cnblogs.com/Rampant/p/16929107.html

相关文章

  • Hyper-v系列---【如何快速复制一台已安装好的虚拟机?】
    如何快速复制一台已安装好的虚拟机?前提先创建一台可以联网的纯净的虚拟机:https://www.cnblogs.com/hujunwei/p/16928657.html1.先把装好的服务器导出一份备用注意:只用......
  • 二进制安装Mysql数据库的快速方法
    二进制安装Mysql数据库的快速方法摘要还是国产操作系统rpm包可能不太兼容,为了简单准备使用tar包方式安装mysql数据库这里简单记录一下过程.为以后使用.介质下载......
  • Altium Designer Winter 09 — 01 — 快速创建项目
    新建项目 新建原理图导入所需的库添加元器件和接插件连接导线自动标注、修改元件属性编译前——修改项目属性编......
  • SpringCould入门
    微服务的优点与缺点?优点:每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求开发简单、开发效率提高,一个服务可能就是专一的只干一件事微服务能够......
  • docker快速搭建zookeeper集群
    一、准备工作1、拉取zookeeper镜像dockerpullzookeeperdockertagdocker.io/zookeeperzookeeperdockerrmidocker.io/zookeeper2、安装docker-compose工具#升级pippi......
  • 【Amadeus原创】vmware ESXi快速创建新的虚拟机
    准备工作:新虚拟机Win10安装后,需要windowsupdate,更新补丁到最新,关机。(本文案例win10-Amadeus)在数据盘新建Win10-Users文件夹(可自定义)复制win10-Amadeus的vmx、vmdk文件到wi......
  • Spring--AOP简介+入门案例
    AOP简介面向切面编程:在不惊动原始设计的基础上,进行功能增强各个要应用该功能的对象叫做连接点,那个功能叫做通知,表面上的代码没有发生变化,私下里发生变化的连接点,会出现切......
  • 树莓派快速上手-远程调试图形界面
    0简述前面的文章里介绍过通过ssh在局域网或者远程访问树莓派,一般而言,对于非图形界面的开发仅通过ssh命令行交互就能够完成的,但是要开发图形界面展示或交互的应用时,光命令行......
  • 【算法入门&搜索法】走迷宫|单源最短路径1
    文章目录​​......
  • Bootstrap_快速入门与Bootstrap_栅格系统_入门
    Bootstrap_快速入门Bootstrap快速入门1.下载Bootstrap2.将这个三文件复制到项目中 3.创建......