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
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-clp
和 anyhow
的依赖。
[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