11个版本
0.2.6 | 2023年5月23日 |
---|---|
0.2.5 | 2023年5月9日 |
0.1.3 | 2023年5月5日 |
0.1.2 | 2023年4月8日 |
#1921 in 解析器实现
28KB
570 行
EasyArg
EasyArg 从命令行参数/系统环境变量/.env文件中解析参数
目前不要使用此crate。
待办事项
[ ] 重写所有 [ ] 支持命令行 [ ] 支持环境 [ ] 支持JSON [ ] 支持TOML
lib.rs
:
EasyArg
EasyArg 从命令行参数/系统环境变量/.env文件中解析参数
您将阅读
- 如何设置
- 如何获取
- 如何别名
- 如何添加帮助描述
如何设置
1. 命令行
your_app -p --name=some_one -- invalid --hello "world"
将生成
{
"name": "some_one",
"hello": "world",
"p": "true",
}
规则
--p = "abc" ✔
--p=abc ✔
--p abc ✔
--p -- abc ✔ // p = "abc",-- will be ignored
-p ✔ // p = "true"
-p=abc ✔
--p ❌
2. 系统环境变量
export SOME_VAR=123
然后您可以通过以下方式访问它
let easy = EasyArg::new();
easy.get_string("SOME_VAR") // "123"
3. .env文件
您可以使用不同方式使用.env文件
- 通过传递
-e
/--envfile/
-envfile
参数
如果没有envfile参数,它将按顺序搜索
- 当前工作目录/.env
- 当前工作目录/.easy_arg.env
- 家目录/.easy_arg.env
如果您想自定义.env文件名,请使用
EasyArg::new_with_env("your_file_name");
它将搜索
- 当前工作目录/your_file_name.env
- 家目录/your_file_name.env
.env示例
(docs.rscrates.io)
DIR = abc
DIR2="dfdadfasfasf" # this is a comment
将生成
{
"OK": "true",
"DIR": "abc",
"DIR2": "dfdadfasfasf",
"HHD": "/home/xxx/abc/${NOT_EXIST}",
"GOOD": "true",
}
如何获取
注意:所有变量都将解析为字符串。
easy
代表 EasyArg
的实例。
1. 您需要一个原始字符串
easy.raw_value("KEY");
2. 您需要一个字符串,即使它不存在
easy.get_string("KEY");
3. 如果字符串不存在,则引发恐慌
easy.must_get_string("IMPORTANT_KEY");
4. 您需要一个布尔值
如果没有为键提供值,则默认为true。只有 "false"
,"False"
,"FALSE"
,"0"
,"null"
,"NULL"
,"Null"
将解析为false。
easy.get_bool("KEY");
5. 您需要一个vec
// --list=a,b,c
easy.get_vec("KEY") // the result: vec!["a", "b", "c"]
如何别名
your_app -p --s=xbox
您的Rust代码
easy.alias("p", "PS5")
easy.to_string("PS5") // "true"
easy.to_string("p") // "true"
如何添加帮助描述
easy.desc_str("a", "description")
easy.desc_flag("b", "description")
输出
Executable: target/debug/xxx
-- a description
- b description
依赖关系
~2.2–3MB
~53K SLoC