1 个不稳定版本
0.1.0 | 2022年10月5日 |
---|
#494 在 命令行界面
145KB
2K SLoC
Rust的命令行解析器
该库的主要目的是解析完整的命令行。也就是说,包含完整命令行的字符串。它也可以解析Rust环境命令行参数(由Rust提供 std::env::Args
),但是还有其他专注于这一功能的库,可能更适合。
虽然Rust标准库没有提供对完整环境命令行的访问权限,但这个库可以用于解析在应用程序中输入的内部命令。
特性
- 命令行解析
- 环境参数解析
- 命令行风格
- 指定可以用于引用参数和选项值的字符(或字符集合)
- 指定可以用于宣布选项的字符(或字符集合)
- 指定可以用于宣布选项值(包括空格字符)的字符(或字符集合)
- 指定将终止命令行解析的字符(或字符集合)
- 匹配参数、选项代码和选项值时的大小写敏感性
- 具有多于一个字符的代码的选项是否需要2个宣布字符(例如 --anOpt)
- 使用双引号在引用参数和选项值中嵌入引用字符
- 使用转义序列包含具有特殊意义的字符
- 命令行中的第一个参数是否是二进制的名称/路径
- 参数匹配
- 参数或选项
- 参数索引
- 参数索引
- 参数文本(字符串或正则表达式)
- 选项索引
- 选项代码(字符串或正则表达式)
- 选项是否有值(None、IfPossible、Always)
- 选项值文本(字符串或正则表达式)
- 选项值是否可以以选项宣布字符开头
- 使用枚举(或任何其他类型)对匹配器中的参数和选项进行标记,以便于识别
- 解析错误结果具有描述错误类型和发生位置的属性。
用法
该库中的主要项包括
Parser
- 解析命令行的对象。它具有根据命令行风格设置的属性,以及用于识别命令行参数的匹配器列表。Matcher
- 每个参数都必须与匹配器进行匹配。通常为每个参数创建一个匹配器,但是匹配器也可以用于匹配多个参数。Arg
- 一个包含3种变体的枚举:Binary、Param、Option。Parser的解析函数返回这些变体的数组 - 每个变体都标识了解析器在命令行中找到的参数。
按照以下步骤解析命令行
- 创建一个枚举,为命令行中期望的每种选项参数类型添加一个变体。
- 创建一个枚举,为命令行中期望的每种参数类型添加一个变体。
- 创建一个
Parser
实例。 - 如果需要,设置Parser实例的相关属性以反映命令行的风格。
- 将所有可能的参数的
Matcher
添加到解析器中。为每个匹配器添加适当的枚举标签。 - 调用
Parser::parse_line(command_line)
,它将解析命令行并返回一个结果,包含一个Arg
向量或错误。 - 遍历返回的向量并处理每个
Arg
。
依赖项
~2.2–3MB
~53K SLoC