你能为默认的命令,提供你自己的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。
Go语言命令行利器cobra使用教程cobra是一个提供简单接口来创建强大的现代CLI界面的库类似gitgit toolsgo语言编写命令行程序,cobra也是一个应用程序,它会生成你的应用程序的脚手架来快速开发基于cobra的应用程序
cobra提供:
cobra建立在命令、参数、标志的结构之上
commands代表动作,args是事物,flags是动作的修饰符
最好的应用程序在使用时读起来就像句子,因此,用户直观地知道如何与它们交互
模式如下:APPNAME VERB NOUN --ADJECTIVE. or APPNAME COMMAND ARG --FLAG(APPNAME 动词 名词 形容词 或者 APPNAME 命令 参数 标志)
一些真实世界的好例子可以更好地说明这一点
kubectl 命令更能体现APPNAME 动词 名词 形容词
如下的例子,server 是command,port是flag
这个命令中,我们告诉git 克隆url
命令是应用程序的中心点,应用程序支持的每一个交互都包含在一个命令中,命令可以有子命令,也可以运行操作
在上面的例子中,server是命令
更多关于cobra.Command
flag是一种修改命令行为的方式,cobra支持完全兼容POSIX标志,也支持go flag package,cobra可以定义到子命令上的标志,也可以仅对该命令可用的标志
在上面的命令中 , port是标志
标志的功能由 pflag library 提供,pflag library是flag标准库的一个分支,在添加POSIX兼容性的同时维护相同的接口 。
使用cobra很简单,首先,使用go get按照最新版本的库,这个命令会安装cobra可执行程序以及库和依赖项
下一步 , 引入cobra到应用程序中
虽然欢迎您提供自己的组织,但通常基于Cobra的应用程序将遵循以下组织结构:
推荐阅读
- oracle表高水位线,mysql 高水位
- asp.net工程师,aspnet
- 阿里云服务器重置服务器,阿里云 重置服务器
- python模糊查找函数 python 模糊查找
- 苹果ios1331系统怎么样,iphone1331系统怎么样
- java代码怎么实现上标,java标点符号
- 家庭电脑直播设备推荐,电脑直播全套设备有哪些
- 唱歌野外直播需要什么设备,唱歌野外直播需要什么设备呢
- html5字体上下居中,html5设置字体居中