Skip to content

Files

Latest commit

Mar 5, 2025
0197607 · Mar 5, 2025

History

History
122 lines (94 loc) · 4.1 KB

FEATURES.md

File metadata and controls

122 lines (94 loc) · 4.1 KB

QuickClop 功能清单

QuickClop 是一个 Go 语言命令行参数解析代码生成工具,可以根据结构体定义和标签自动生成命令行参数解析代码。

核心功能

  1. 代码生成

    • 基于结构体定义自动生成命令行解析代码
    • 支持 go:generate 集成
    • 生成的代码易于理解和维护
  2. 标签解析

    • 支持 clop 标签解析短选项和长选项
    • 支持 usage 标签解析选项描述
    • 支持 args 标签解析命令行位置参数
    • 支持 env 标签绑定环境变量
    • 支持 default 标签解析默认值
  3. 类型支持

    • 基本类型: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
  4. 参数解析

    • 支持短选项和长选项:-s, --long
    • 支持位置参数:args
    • 支持子命令:subcmd
    • 支持从环境变量读取值
    • 支持设置默认值
  5. 帮助信息

    • 自动生成帮助信息
    • 显示选项描述
    • 显示环境变量绑定
    • 显示默认值
  6. 命令行工具

    • 支持指定目录或文件进行处理
    • 自动递归处理目录下的所有 Go 文件
    • 生成的文件名基于源文件名,添加 _clop.go 后缀
  7. 环境变量支持

    • 支持通过 env 标签将选项绑定到环境变量
    • 在帮助信息中显示绑定的环境变量
    • 环境变量值的优先级低于命令行参数
  8. 版本信息

    • 支持自动生成版本信息命令
    • 通过结构体标签定义版本号、描述和构建信息
    • 使用 :quickclop version:"1.0.0" description:"描述" build:"构建信息" 格式的标签
    • 自动识别 Version 字段并处理版本信息显示
  9. 配置文件支持

    • 支持从 JSON、YAML 和 TOML 格式的配置文件中读取选项值
    • 支持通过命令行参数 -c/--config 指定配置文件路径
    • 优先级:命令行参数 > 环境变量 > 配置文件 > 默认值
  10. Shell 补全脚本生成

    • 支持生成 shell 补全脚本(bash, zsh, fish 等)
    • 通过 --completion --shell <shell类型> 参数生成补全脚本
    • 支持选项和子命令的补全

高级特性

  1. 智能类型处理

    • 自动识别基本类型,避免不必要的结构体查找
    • 正确处理指针、切片和映射类型
    • 为不同类型生成适当的解析代码
  2. 错误处理

    • 生成的代码包含完善的错误处理逻辑
    • 对缺失参数值和类型转换错误提供友好的错误信息
  3. 帮助信息生成

    • 自动生成格式化的命令行帮助信息
    • 显示选项的短名称、长名称、类型和描述
    • 支持显示默认值(如果提供)
  4. 代码优化

    • 生成的代码仅导入必要的包
    • 根据实际使用的类型生成相应的解析逻辑
    • 生成的代码遵循 Go 代码规范

使用场景

  1. 命令行工具开发
  2. 配置文件解析
  3. 简化命令行参数处理
  4. 自动生成帮助文档

未来计划

  1. 支持子命令解析
  2. 支持配置文件集成
  3. 提供更丰富的验证选项

TODO

以下是与 clop 相比缺失的功能点:

  1. 验证功能

    • 添加对字段值的验证支持,如范围检查、正则表达式匹配等
    • 支持自定义验证函数
  2. 必填选项

    • 支持标记选项为必填,并在解析时验证
    • 提供友好的错误信息,指出缺少哪些必填选项
  3. 子命令嵌套

    • 支持多级子命令嵌套
    • 为每个子命令生成独立的帮助信息
  4. 帮助信息自定义

    • 支持自定义帮助信息的格式和内容
    • 允许为命令和选项组添加描述
  5. 类型转换增强

    • 支持更多类型的自动转换,如 等
    • 支持自定义类型的解析