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

MIT/Apache

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 并进行修改。

长答

  1. 调用函数 arg_parse,将命令行参数作为字符串数组(&[&str])和解析起始位置传递。

  2. 返回值是一个包含三个值的元组。

  • 第一个值指示解析结果是否为选项或普通参数等。
  • 第二个值指示如果将结果解释为不带参数的选项,则下一个解析起始位置的增量,否则为 None。
  • 第三个值是如果将解析结果解释为带参数的选项,则下一个解析起始位置和参数字符串的增量。否则,为 None。

使用 arg_parse 对选项和(普通)参数进行“完全”解析,包括它们出现的顺序。如果您不需要这种完全解析,只需获取普通参数的值即可,考虑使用 arg_parse_aarg_parse_ahv

有关 arg_parse 的示例代码请参阅 src/main.rs,或有关 arg_parse_ahv 的样板代码请参阅 examples/zgclp_boilerplate.rs

许可证

根据您的选择,许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您提交的任何有意包含在作品中的贡献都应双重许可,如上所述,没有任何附加条款或条件。

无运行时依赖