Overview
- Cli is a simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way.
Installing
1 | go get github.com/urfave/cli/v2 |
Start
- 首先新建一个文件夹 great,初始化模块
1 | mkdir great |
- 然后新建一个文件 great.go,包含以下代码。
1 | package main |
Args and Flags
在上述代码中,定义了两个 flag,用
--lang
、--config
进行调用,或者用简写-l
、-c
定义了两个 command,用
complete
、add
或者简写c
、a
进行调用NArgs()
返回命令行参数的个数Args().Get(i)
用来获取命令行中的第i+1
个参数通过
go install
可以将你的命令集成到系统中
1 | go install |
如果要求用户必须提供所需的标志,则可以将 Required 字段置为 true。如果用户没有提供相应的标志,则会提示用户
Required flag "lang" not set
可以通过 DefaultText 字段指定默认值
标志位的优先级(从高到低)
- 来自用户的命令行标志值
- 环境变量(如果已指定)
- 配置文件(如果已指定)
- 标志上定义的默认值
Subcommands
- 用户可以给已有的命令添加子命令
- 添加子命令的方法也很简单,直接在父命令的结构体中增加 Subcommands 字段,Subcommands 字段也是一个结构体。子命令跟父命令是同一种结构体,简单理解为套娃。
1 | package main |
Add Flags for Commands
- 给已有命令添加标志。在结构体中增加
Flag
字段,Flag
也是一个结构体。
1 | package main |
- 下面几种调用方式。主要说一下后面两种。在有多个 Bool 类型的标志位时,可以同一个非 Bool 类型的标志位一起使用,即共有一个
-
。若有多个非 Bool 类型的标志位,则剩余的非 Bool 类型标志位按常规方式使用。
未完待续。。。
- 本文作者: 谷安
- 本文链接: http://example.com/2022/07/23/Cli/
- 版权声明: 转载请注明出处