go语言命令行工具 go语言命令行参数( 三 )


验证位置参数可以通过Command 的 Args 字段 。
内置下列验证方法
一个设置自定义验证的例子
在下面的例子,我们定义了3个命令 。2个在顶级,一个(cmdTimes)是其中一个顶级命令的子命令 。在这个例子里,由于没有给 rootCmd 提供 Run ,单独的root是不能运行的,必须要有子命令 。
我们仅为一个命令定义了标记 。
更多关于flags的文档可以在找到
更完整大型程序的例子, 可以查看Hugo .
当你的程序有子命令时,Cobra 会自动给你程序添加help命令 。当你运行‘app help’,会调用help命令 。另外,help同样支持其它输入命令 。例如 , 你有一个没有任何其它配置的命令叫‘create’,当你调用‘app help create’ Corbra 将会起作用 。
下面的输入是 Cobra 自动生成的 。除了命令和标志的定义 , 其它不再需要 。
help 就跟其它命令一样,并没有特殊的逻辑或行为 。事实上 , 你也可以提供你自己help如果你想的话 。
你能为默认的命令,提供你自己的help命令或模板 。使用下面的方法:
后2个也将适用于任何子命令
当用户提供无效的标记或命令,Cobra 将会返回 用法。
你可能从上面的帮助意识到,默认的帮助将被嵌入到用法里然后作为输出 。
你能提供你自己的用法函数或模板给 Cobra 使用 。
比如帮助 , 方法和模板都可以重写 。
如果Version字段设置到了根命令,Cobra 会提供了一个顶层 ‘--version’标记 。运行带上‘--version’标记的程序,将会按照模板版本信息 。模板可以通过 cmd.SetVersionTemplate(s string) 方法修改
在命令运行前或运行后,再运行方法非常容易 。PersistentPreRun 和 PreRun 方法将会在 Run 之前执行 。PersistentPostRun 和 PostRun 方法将会在 Run 之后执行 。Persistent*Run 方法会被子命令继承 , 如果它们自己没有定义的话 。这些方法将按照下面的属性执行:
下面的例子,2个命令都使用了上面的特性 。当子命令执行的时候,它将执行根命令的 PersistentPreRun  , 但不会执行根命令的 PersistentPostRun :
输出:
Cobra 会自动输出建议,当遇到“unknown command”错误时 。这使得当输入错误时,Cobra 的行为类似 git 命令 。例如:
建议会基于注册的子命令自动生成 。使用了 Levenshtein distance 的实现 。每一个注册的命令会匹配2个距离(忽略大小写)来提供建议 。
如果你希望在你的命令里,禁用建议或虚弱字符串的距离,使用:

你可以通过 SuggestFor 来给命令提供明确的名词建议 。这个特性允许当字符串不相近 , 但是意思与你的命令相近,别切你也不想给该命令设置别名 。比如:
Cobra 可以基于子命令,标记,等生成文档 。以以下格式:
Cobra 可以生成一个bash-completion文件 。如果你给命令添加更多信息,这些completions可以非常强大和灵活 。更多介绍在 Bash Completions。
GitHub Go项目推荐|Golang下的命令行颜色渲染工具库|支持windows Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统
仓库名称 :color
标星(star) :221 (不错哦 , 潜力股项目)
标星趋势
拷贝(fork) :21
贡献人数 :3
仓库大小 :1 MB
主要开发语言:Go
语言分布:Go:99.75%、Batchfile:0.25%
代码提交周期分布 :
作者动态 :
2星
Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统
功能特色

推荐阅读