Go

Golang之实用的命令行工具包cobra

2020-06-25  本文已影响0人  炎鸿

cobra简介

Cobra 是一个非常实用(流行)的golang包,很多优秀的开源应用都在使用它,包括 Docker 和 Kubernetes 等,它提供了简单的接口来创建命令行程序。同时,Cobra 也是一个应用程序,用来生成应用框架,从而开发以 Cobra 为基础的应用。

主要功能

创建 cobra 应用

1.安装 cobra 包
$ go get -u github.com/spf13/cobra/cobra
2.用cobra生成应用程序框架
$ cobra init projpath --pkg-name appname
3.用cobra生成命令代码
$ cd projpath
$ cobra add cmd_1
$ cobra add cmd_2
4.用cobra为命令添加选项(flags)

选项(flags)用来控制cmd的具体行为。根据选项作用范围,分为persistentlocal.
对于 persistent 类型的选项,既可以设置给该 Command,又可以设置给该 Command 的子 Command。对于一些全局性的选项,比较适合设置为 persistent 类型,local 类型的选项只能设置给指定的 Command。

var Verbose bool
rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")

var Source string
rootCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from")
5.用cobra为命令添加参数(arguments)

cobra 默认提供了一些验证方法:

  • NoArgs - 如果存在任何位置参数,该命令将报错
  • ArbitraryArgs - 该命令会接受任何位置参数
  • OnlyValidArgs - 如果有任何位置参数不在命令的 ValidArgs 字段中,该命令将报错
  • MinimumNArgs(int) - 至少要有 N 个位置参数,否则报错
  • MaximumNArgs(int) - 如果位置参数超过 N 个将报错
  • ExactArgs(int) - 必须有 N 个位置参数,否则报错
  • ExactValidArgs(int) 必须有 N 个位置参数,且都在命令的 ValidArgs 字段中,否则报错
  • RangeArgs(min, max) - 如果位置参数的个数不在区间 min 和 max 之中,报错
var cmdTimes = &cobra.Command{
    Use: …
    Short: …
    Long: …
    Args: cobra.MinimumNArgs(1),
    Run: …
}
上一篇 下一篇

猜你喜欢

热点阅读