6 个版本

0.3.1 2022年3月31日
0.3.0 2022年3月31日
0.2.1 2022年3月31日
0.1.1 2022年3月30日

#896 in 命令行界面


用于 o-o

MIT/Apache

13KB
256

ng-clp

ng-clp(无语法定义命令行解析器)是Rust的命令行解析器之一。一个普通的命令行解析器会根据命令行选项的定义生成一个解析器,该解析器根据其语法接受命令行。相比之下,ng-clp使用通用解析器来发现它假设来自给定命令行参数的选项或参数。

它是如何工作的?

您可以使用以下命令运行一个示例程序:

$ cargo run -- foo -bar bal --bra boo
Argument: foo
Option: -b ar
Argument: bal
Option: --bra boo

ng-clp接受的标志和选项的格式

ng-clp接受的参数、标志和选项可以描述如下(选项名称、参数等在此处使用大写字母,以便更容易区分)。

格式 解析
-A 标志 -A
-ABC 带有参数 BC 的选项 -A
-ABC 带有参数 BC 的选项 -A
--AB 标志 --AB
--AB CD 带有参数 CD 的选项 --AB
--AB=CD 带有参数 CD 的选项 --AB

"但这不是含糊不清的吗?"如果您在思考这个问题,您是对的。

当命令行是

-a bc

ng-clp允许以下两种解释来处理命令行:

  • 出现了一个标志 -a(没有参数;后面的 bc 是一个普通的命令行参数,与标志 - 没有关系)。
  • 出现了一个带有参数 bc 的选项 -

我该如何使用ng-clp?

(1) 在 Cargo.toml 中添加对 ng-clpanyhow 的依赖。

[dependencies]
ng-clp = "0.3"
anyhow = "1.0"

(2) 将模板代码 boilerplate/main.rs 拷贝到您的 main.rs 文件中并进行修改。

许可证

MIT/Apache-2.0

ng-clp 与原始产品 gzclp 采用相同的理念,但它们的 API 完全不同。

依赖项

~0.4–1MB
~21K SLoC