写点什么

7.1 Go 语言从入门到精通:Cobra 介绍

用户头像
xcbeyond
关注
发布于: 2021 年 04 月 08 日
7.1 Go语言从入门到精通:Cobra介绍

最近一直在看 Istio (一个 Service Mesh 框架)相关的东西,当看到其源码时发现了一个新东西 Cobra,一查却发现这是个好东西,用的地方可不少,比如:DockerKubernetes等都有它的身影存在。为了更好的了解这些开源框架(如,IstioKubernetes 等),势必需要对 Cobra 做一个详细的了解,后续可能用到它的地方会很多。今天就 Cobra 做一个整体的介绍,让我们对它能有所认识,或许今后你的项目中也会用到它。

1、Cobra 概述

Cobra 是一个 Golang 包,它提供了简单的接口来创建命令行程序。同时,Cobra 也是一个应用程序,用来生成应用框架,从而开发以 Cobra 为基础的应用。

1.1 主要功能

cobra 的主要功能如下:


  • 简易的子命令行模式,如 app serverapp fetch 等等。

  • 完全兼容 posix 命令行模式。

  • 嵌套子命令 subcommand

  • 支持全局,局部,串联 flags

  • 使用 cobra 很容易生成应用程序和命令(cobra init appnamecobra add cmdname)。

  • 提供智能化的提示(如,输出 app srver 命令,将提示 你是要输入 app server 吗?)。

  • 自动生成 commandsflags 的帮助信息。

  • 自动生成详细的 help 信息,如 app -help

  • 自动识别帮助 flag-h--help

  • 自动生成应用程序在 bash 下命令自动完成功能。

  • 自动生成应用程序的 man 手册。

  • 命令行别名。

  • 自定义 helpusage 信息。

  • 可选的与 viper 的紧密集成。


对于命令行程序而言,上面这些功能简直就是量身打造。

1.2 应用举例

Cobra 被用于许多 Go 项目中,例如:KubernetesHugoGithub CLI等,更多广泛使用的项目有:


(来源于:https://github.com/spf13/cobra/blob/master/projects_using_cobra.md



看了这些,一个字“赞”,两个字“优秀”!


了解了 Cobra 后,再去看这些 KubernetesetcdRegistry 等开源项目的代码时,也就大概知道如何去看了,这也就是我学习 Cobra 的目的。

2、概念

Cobra 是基于命令(commands)、参数(arguments )、选项(flags)而创建的。


在具体了解、使用 Cobra 前有一些概念需要提前知晓一下:命令(commands)、参数(arguments )、选项(flags)这几个概念。


  • commands 命令代表行为。

  • arguments 参数代表命令行参数。

  • flags 选项代表对命令行为的改变,即命令行选项。


最好的命令行程序在实际使用时,就应该像在读一段优美的语句,能够更加直观的知道如何与用户进行交互。执行命令行程序应该遵循一般的格式: APPNAME VERB NOUN --ADJECTIVE APPNAME COMMAND ARG --FLAG


比如下面的示例:


# server是 commands,port 是 flaghugo server --port=1313
# clone 是 commands,URL 是 arguments,brae 是 flaggit clone URL --bare
复制代码


发布于: 2021 年 04 月 08 日阅读数: 42
用户头像

xcbeyond

关注

不为别的,只为技术沉淀、分享。 2019.06.20 加入

公众号:程序猿技术大咖,专注于技术输出、分享。

评论

发布
暂无评论
7.1 Go语言从入门到精通:Cobra介绍