golang命令行库cobra的使用
一、简介
Cobra是一个golang库,它提供了一个简单的编程界面来创建类似于Git和Go工具的强大的现代CLI接口。
Cobra同时提供了一个工具,帮程序员快速实现CLI框架。
Cobra具有如下强大的功能:
1.简易的子命令行模式,如 app server, app fetch等等
2.完全兼容posix命令行模式
3.嵌套子命令subcommand
4.支持全局,局部,串联flags
5.使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname
6.如果命令输入错误,将提供智能建议,如 app srver,将提示srver没有,是否是app server
7.自动生成commands和flags的帮助信息
8.自动生成详细的help信息,如app help
9.自动识别-h,--help帮助flag
10.自动生成应用程序在bash下命令自动完成功能
11.自动生成应用程序的man手册
12.命令行别名
13.自定义help和usage信息
14.可选的紧密集成的viper apps
Cobra建立在如下概念基础上
命令(Commands):表明执行什么动作(COMMAND)
参数(Args): 表明执行动作需要的条件参数(ARG)
选项(Flags): 表明执行动作的的可选项(FLAG)
形式如下:
APPNAME COMMAND ARG --FLAG
二、用法
1.Cobra init APPNAME
用这个可以初始化一个名称为APPNAME的CLI应用,APPNAME将作为应用名称
生成如下目录结构
LICENSE
│ main.go
│
└─cmd
root.go
2.cobra add
一旦生成应用程序框架后,就可以用过Cobra add命令添加命令了
如下依次添加三条命令,serve , config ,config->create (config的子命令)
cobra add serve
cobra add config
cobra add config create
以上命令运行后,目录结构如下:
LICENSE
│ main.go
│
└─cmd
config.go
create.go
root.go
serve.go
整个过程如下:
D:\study\go\src>cd app1
D:\study\go\src\app1>cobra add serve
serve created at D:\study\go\src\app1\cmd\serve.go
D:\study\go\src\app1>cobra add config
config created at D:\study\go\src\app1\cmd\config.go
D:\study\go\src\app1>cobra add create -p configCmd
create created at D:\study\go\src\app1\cmd\create.go
D:\study\go\src\app1>go run main.go serve
serve called
D:\study\go\src\app1>go run main.go config
config called
D:\study\go\src\app1>go run main.go config create
create called
3.配置cobra generator
可以在app1目录下新建config.yaml,内容如下:
author: Steve Francia <[email protected]>
license: MIT
内置license支持GPLv2, GPLv3, LGPL, AGPL, MIT, 2-Clause BSD or 3-Clause BSD.
也可以自定义license字段,示例如下:
license:
header: This file is part of {{ .appName }}.
text: |
{{ .copyright }}
This is my license. There are many like it, but this one is mine.
My license is my best friend. It is my life. I must master it as I must
master my life.
命令:cobra add update --config config.yaml
可以添加命令update command.
golang命令行库cobra的使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Watch One Piece Film: Red Streaming 2022 HD
recingbaduttt
2022-07-16 16:32:15
4 Tips on Writing I Have Not Seen Anywhere Else
viondal07
2022-07-09 01:32:03
Ways To Help You Beat Writer’s Block
viondal07
2022-07-01 23:39:36
90%的数据外泄都是员工失误?如何防患于未然?
pissy.yue.88
2022-06-28 13:18:19
Should you design for big tech, agencies, or startups?
viondal07
2022-06-23 23:32:55
The Life That Was Never Postponed
viondal07
2022-06-22 17:04:06
cxvxc vxcvzx czx czxczx czxczxc
wbsbydw
2022-06-20 09:40:34
Calibri — The Font That Avoided Cult Status
viondal07
2022-06-20 00:09:12
Calibri — The Font That Avoided Cult Status
viondal07
2022-06-20 00:08:24
Awogmadagascar_
kylemadison780
2022-06-18 20:37:30
Keto Blast Gummies #1 Product Reduces Belly Fat Exclusively Discounted Price Check Out Here
pihfggsbh
2022-06-18 13:36:56
WQTEY AWTGEHR
lemonkawsar80
2022-06-18 04:41:06
wtyehr
lemonkawsar80
2022-06-18 00:16:15
mammography workstations market Future Size 2027
prathmeshgawade552
2022-06-17 17:31:28
SERTGERTSERSYRT
elysecizek
2022-06-17 07:38:01
24小時熱門文章
-
使用c#强大的表达式树实现对象的深克隆之解决循环引用的问题
-
GPT-4o 引领人机交互新风向,向量数据库赛道沸腾了
-
free AI online tools All In One
-
痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(12.A)- uSDHC eMMC启动时间(RT1170)
-
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
-
企业大模型如何成为自己数据的“百科全书”?
-
本地SSL证书过期 输入命令在IIS自动生成
-
.NET周刊【5月第2期 2024-05-12】
-
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
-
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)