2 个版本
0.1.1 | 2019 年 11 月 29 日 |
---|---|
0.1.0 | 2019 年 11 月 29 日 |
#16 in #exec
8KB
109 行
dotenv-exec
Simple Rust 包装器围绕 execpv
(通过 std::os::unix::process::CommandExt
和 dotenv-rs 为 Unix 系统。
这将执行一个程序,从 .env
文件中填充环境变量。默认情况下,它将在当前目录或其父目录中查找名为 .env
的文件(您可以使用 --no-default
禁用此功能),并按顺序加载任何指定为 -f / --file
的 env 文件。
所有格式化、替换和排序规则与 dotenv-rs
相同。
安装
- 通过 cargo 安装:
cargo install dotenv-exec
- 从 GitHub 发布页面 下载二进制文件。
示例
$ cat <<EOT > .env
VAR_1=1
VAR_2=2
EOT
$ cat <<EOT > .env-2
VAR_1=0
VAR_3=3
EOT
# Load .env by default
$ dotenv-exec -- env | grep VAR_
VAR_1=1
VAR_2=2
# Disable this behaviour with --no-default
$ dotenv-exec --no-default -- env | grep VAR_
# dotenv-rs does not override already set values (see VAR_1), so the order in
# which files are specified is important.
$ dotenv-exec -f .env-2 -- env | grep VAR_
VAR_1=1
VAR_2=2
VAR_3=3
$ dotenv-exec --no-default -f .env-2 -f .env -- env | grep VAR_
VAR_1=0
VAR_3=3
VAR_2=2
# If you generate env file on the fly (e.g. decrypting them), you should use
# IO redirection
dotenv-exec --no-default -f <(cat .env-2) -- env | grep VAR_
VAR_1=0
VAR_3=3
备注
- 这是一个第一个版本,可能会有一些变化,具体取决于我的使用情况如何发展。特别是,我不确定
--no-default
和--ignore-missing
是否是正确的默认值,我看到了没有覆盖/逆优先级顺序的行为可能是不直观的风险。 - 由于从字符串而不是文件中读取 目前 dotenv-rs 似乎不支持,因此此实现没有实现
-f -
约定。当使用动态生成的 env 文件时,可以使用 IO 重定向作为替代方案。
依赖关系
~3MB
~53K SLoC