#dotenv #exec #shell #env-file #env-var

app dotenv-exec

dotenv-exec 是 execpv 的一层薄包装,用于在 Unix 系统上使用由一个或多个 dotenv 文件提供的环境变量来执行程序。

2 个版本

0.1.1 2019 年 11 月 29 日
0.1.0 2019 年 11 月 29 日

#16 in #exec

自定义许可

8KB
109

dotenv-exec

Crates.io GitHub Workflow Status

Simple Rust 包装器围绕 execpv(通过 std::os::unix::process::CommandExtdotenv-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