Crates.io | dotenv-exec |
lib.rs | dotenv-exec |
version | 0.1.1 |
source | src |
created_at | 2019-11-29 09:08:33.285532 |
updated_at | 2019-11-29 09:34:22.018765 |
description | dotenv-exec is a thin wrapper around execpv used to execute programs with environment variables provided by one or more dotenv files on unix systems. |
homepage | https://github.com/lirsacc/dotenv-exec |
repository | https://github.com/lirsacc/dotenv-exec |
max_upload_size | |
id | 185276 |
size | 14,972 |
Simple Rust wrapper around execpv
(through std::os::unix::process::CommandExt
) and dotenv-rs for unix systems.
This will execute a program populating environment variables from .env
files. By default it will look up a file named .env
in the current directory or any of its parents (you can disable this with --no-default
) and load any env file specified with -f / --file
in that order.
All formatting, substitution and ordering rules are the same as dotenv-rs
.
cargo install dotenv-exec
$ 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
and --ignore-missing
are the right defaults and I see a risk that the no override / reverse priority order behaviour could be counter intuitive.-f -
convention. IO redirection should work as an alternative when using dynamically generated env files.