当前位置: 首页 > 工具软件 > Cobra > 使用案例 >

Cobra 快速入门 - 专为命令行程序而生

邹普松
2023-12-01

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

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

Cobra
1.2 主要功能

Cobra 的主要功能如下:

    简易的子命令行模式,如 app server, app fetch 等等。
    完全兼容 posix 命令行模式。
    嵌套子命令 subcommand。
    支持全局,局部,串联 flags。
    使用 cobra 很容易生成应用程序和命令(cobra init appname 和 cobra add cmdname)。
    提供智能化的提示(如,输出 app srver 命令,将提示 你是要输入 app server 吗?)。
    自动生成 commands 和 flags 的帮助信息。
    自动生成详细的 help 信息,如 app -help。
    自动识别帮助 flag、 -h,--help。
    自动生成应用程序在 bash 下命令自动完成功能。
    自动生成应用程序的 man 手册。
    命令行别名。
    自定义 help 和 usage 信息。
    可选的与 viper 的紧密集成。

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

Cobra 被用于许多 Go 项目中,例如:Kubernetes、Hugo和Github CLI等,更多广泛使用的项目有:

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

    Arduino CLI
    Bleve
    CockroachDB
    Cosmos SDK
    Delve
    Docker (distribution)
    Etcd
    Gardener
    Giant Swarm’s gsctl
    Git Bump
    Github CLI
    GitHub Labeler
    Golangci-lint
    GopherJS
    Helm
    Hugo
    Istio
    Kool
    Kubernetes
    Linkerd
    Mattermost-server
    Metal Stack CLI
    Moby (former Docker)
    Nanobox/Nanopack
    OpenShift
    Ory Hydra
    Ory Kratos
    Pouch
    ProjectAtomic (enterprise)
    Prototool
    Random
    Rclone
    Skaffold
    Tendermint
    Twitch CLI
    Werf

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

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

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

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

更多请见:http://www.mark-to-win.com/tutorial/50506.html

 类似资料: