5 个不稳定版本
0.3.1 | 2022年3月30日 |
---|---|
0.3.0 | 2021年11月3日 |
0.2.0 | 2021年10月31日 |
0.1.1 | 2021年10月30日 |
0.1.0 | 2021年10月30日 |
#64 in #cli-parser
17KB
293 行
zgclp
** 已弃用**: 请使用 ng-clp 代替。
Zgclp (零语法定义命令行解析器) 是Rust的一个命令行解析器。普通的命令行解析器会根据命令行选项的定义生成解析器,根据语法接受命令行。相比之下,zgclp使用通用解析器来发现它认为的选项或参数。
它是如何工作的?
您可以使用“cargo build”构建示例程序,并按照以下方式尝试。
$ cargo build
$ target/debug/zgclp foo -bar bal --bra boo
Argument "foo" .
Option "-b" with argument "ar" .
Argument "bal" .
Option "--bra" with argument "boo" .
zgclp接受的选项格式
当您以字母表中的一个字母A、B等写入时,zgclp接受以下选项。
格式 | 解析 |
---|---|
-A |
无参数选项 -A . |
-ABC |
带参数的选项 -A 参数为 BC . |
-ABC |
带参数的选项 -A 参数为 BC . |
--AB |
无参数选项 --AB . |
--AB CD |
带参数的选项 --AB 参数为 CD . |
--AB=CD |
选项 --AB 参数为 CD . |
-- |
分隔符。 |
"但这不是含糊不清的吗?"如果您在想,您是对的。
当命令行是
-a bc
zgclp将输出以下两种解释。
- 选项
-a
出现且没有参数(下一个bc
是一个正常的命令行参数,与选项-a
没有关系)。 - 选项
-a
出现且带有参数bc
。
我该如何使用zgclp?
简答
将模板代码 examples/zgclp_boilerplate.rs 复制为您的 main.rs
并进行修改。
长答
-
调用函数
arg_parse
,将命令行参数作为字符串数组(&[&str]
)和解析起始位置传递。 -
返回值是一个包含三个值的元组。
- 第一个值指示解析结果是否为选项或普通参数等。
- 第二个值指示如果将结果解释为不带参数的选项,则下一个解析起始位置的增量,否则为 None。
- 第三个值是如果将解析结果解释为带参数的选项,则下一个解析起始位置和参数字符串的增量。否则,为 None。
使用 arg_parse
对选项和(普通)参数进行“完全”解析,包括它们出现的顺序。如果您不需要这种完全解析,只需获取普通参数的值即可,考虑使用 arg_parse_a
或 arg_parse_ahv
。
有关 arg_parse
的示例代码请参阅 src/main.rs,或有关 arg_parse_ahv
的样板代码请参阅 examples/zgclp_boilerplate.rs。
许可证
根据您的选择,许可协议为以下之一
- Apache License,版本 2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献都应双重许可,如上所述,没有任何附加条款或条件。