#env-var #command-line #env #arguments-parser #dotenv

easy_arg

EasyArg 从命令行参数/系统环境变量/.env文件中读取变量

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 解析器实现

MIT/Apache

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参数,它将按顺序搜索

  1. 当前工作目录/.env
  2. 当前工作目录/.easy_arg.env
  3. 家目录/.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