「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」。
简介
cobra是大佬 spf13 的一个现代化的CLI工具包,业界有名的kubernetes和docker都有使用它作为客户端命令行工具
另外大佬spf13还有其他比较流行的项目,比如配置工具viper,静态网站生成器hugo等
cobra官网: github.com/spf13/cobra
cobra特点
- 子命令编写简单
- 支持嵌套子命令
- 智能建议(语义化识别)
- 自带帮助标识 -h、–help等
- 命令和标识等自动生成(需先定义结构)
- 完全符合POSIX的标志,包括短版和长版
- 可以自定义帮助,用法等
- 自动生成命令补全功能
概念
cobra建立在命令、参数和标志的结构上,命令代表动作,参数是事物,标志是这些动作的修饰符
最好的cobra命令行工具在使用时读起来像句子,非常便于理解(模式: appname command arg –flag)
安装
基于go model的方式安装
1 | js复制代码go get -u github.com/spf13/cobra |
在代码中引入
1 | js复制代码import "github.com/spf13/cobra" |
使用
编写第一个demo
此demo中定义了一个子命令print, 将接收到的参数打印出来
1 | js复制代码package main |
运行会报错,因为结构中声明了最小参数个数
如果想在代码编辑器中运行,需要编辑配置,设置程序参数 那一行
仿docker部分命令的demo
使用cobra编写命令行工具,调用系统上的docker命令进行操作,也可以伪装其他命令
1 | js复制代码package main |
运行后截图
总结
本文只是简单的实践了一下cobra创建命令行工具,可以发现编写命令行工具非常简单和快速。。
官网比较推荐的方法是使用cobra init直接生成骨架,然后直接写入相关逻辑,感兴趣的伙伴可以看看,传送门: github.com/spf13/cobra…
本文转载自: 掘金