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 <spf@spf13.com>
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.
一、简介
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 <spf@spf13.com>
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.