QuickClop 是一个 Go 语言命令行参数解析代码生成工具,可以根据结构体定义和标签自动生成命令行参数解析代码。
-
代码生成
- 基于结构体定义自动生成命令行解析代码
- 支持
go:generate
集成 - 生成的代码易于理解和维护
-
标签解析
- 支持
clop
标签解析短选项和长选项 - 支持
usage
标签解析选项描述 - 支持
args
标签解析命令行位置参数 - 支持
env
标签绑定环境变量 - 支持
default
标签解析默认值
- 支持
-
类型支持
- 基本类型:
string
,int
,float64
,bool
- 指针类型:
*string
,*int
,*float64
,*bool
- 切片类型:
[]string
,[]int
,[]int8
,[]int16
,[]int32
,[]int64
,[]uint
,[]uint8
,[]uint16
,[]uint32
,[]uint64
,[]float32
,[]float64
,[]bool
,[]byte
,[]rune
- 时间类型:
time.Duration
,*time.Duration
,time.Time
,*time.Time
- URL 类型:
url.URL
,*url.URL
- IP 地址类型:
net.IP
,*net.IP
,net.IPNet
,*net.IPNet
- 基本类型:
-
参数解析
- 支持短选项和长选项:
-s
,--long
- 支持位置参数:
args
- 支持子命令:
subcmd
- 支持从环境变量读取值
- 支持设置默认值
- 支持短选项和长选项:
-
帮助信息
- 自动生成帮助信息
- 显示选项描述
- 显示环境变量绑定
- 显示默认值
-
命令行工具
- 支持指定目录或文件进行处理
- 自动递归处理目录下的所有 Go 文件
- 生成的文件名基于源文件名,添加
_clop.go
后缀
-
环境变量支持
- 支持通过
env
标签将选项绑定到环境变量 - 在帮助信息中显示绑定的环境变量
- 环境变量值的优先级低于命令行参数
- 支持通过
-
版本信息
- 支持自动生成版本信息命令
- 通过结构体标签定义版本号、描述和构建信息
- 使用
:quickclop version:"1.0.0" description:"描述" build:"构建信息"
格式的标签 - 自动识别 Version 字段并处理版本信息显示
-
配置文件支持
- 支持从 JSON、YAML 和 TOML 格式的配置文件中读取选项值
- 支持通过命令行参数
-c/--config
指定配置文件路径 - 优先级:命令行参数 > 环境变量 > 配置文件 > 默认值
-
Shell 补全脚本生成
- 支持生成 shell 补全脚本(bash, zsh, fish 等)
- 通过
--completion --shell <shell类型>
参数生成补全脚本 - 支持选项和子命令的补全
-
智能类型处理
- 自动识别基本类型,避免不必要的结构体查找
- 正确处理指针、切片和映射类型
- 为不同类型生成适当的解析代码
-
错误处理
- 生成的代码包含完善的错误处理逻辑
- 对缺失参数值和类型转换错误提供友好的错误信息
-
帮助信息生成
- 自动生成格式化的命令行帮助信息
- 显示选项的短名称、长名称、类型和描述
- 支持显示默认值(如果提供)
-
代码优化
- 生成的代码仅导入必要的包
- 根据实际使用的类型生成相应的解析逻辑
- 生成的代码遵循 Go 代码规范
- 命令行工具开发
- 配置文件解析
- 简化命令行参数处理
- 自动生成帮助文档
- 支持子命令解析
- 支持配置文件集成
- 提供更丰富的验证选项
以下是与 clop 相比缺失的功能点:
-
验证功能
- 添加对字段值的验证支持,如范围检查、正则表达式匹配等
- 支持自定义验证函数
-
必填选项
- 支持标记选项为必填,并在解析时验证
- 提供友好的错误信息,指出缺少哪些必填选项
-
子命令嵌套
- 支持多级子命令嵌套
- 为每个子命令生成独立的帮助信息
-
帮助信息自定义
- 支持自定义帮助信息的格式和内容
- 允许为命令和选项组添加描述
-
类型转换增强
- 支持更多类型的自动转换,如 等
- 支持自定义类型的解析