4 releases
0.16.2 | Nov 16, 2023 |
---|---|
0.16.1 | Nov 16, 2023 |
0.16.0 | Nov 11, 2023 |
0.15.0 | May 1, 2023 |
#604 in Configuration
32,228 downloads per month
Used in razel
37KB
919 lines
dotenv-flow.rs
A fork of dotenv-rs that adds support for the popular dotenv-flow loading strategy.
The dotenv-flow strategy works as follows:
- if a DOTENV_ENV environment variable is set, load .env.{DOTENV_ENV}.local (e.g. .env.staging.local)
- load .env.local
- if a DOTENV_ENV environment variable is set, load .env.{DOTENV_ENV} (e.g. .env.staging)
- load .env
Each step will only load variables that are not already present in the environment, so for example variables in the .env.{DOTENV_ENV}.local file will have the highest priority, followed .env.local and so on.
Breaking in 0.16.0
- env.{DOTENV_ENV}.local is now loaded before .env.local
HowTo
Installation
cargo add dotenv-flow
Usage
To use this package, add the following line to your main function to load the environment variables from available .env.*
files:
fn main() {
dotenv_flow::dotenv_flow().ok();
}
Tests
To test this project, make sure you pass --test-threads=1
to cargo test
, e.g.
cargo test -- --test-threads=1
This is necessary because cargo test
runs tests in multiple threads by default, but environment variables are process-globals, therefore we need to limit concurrency to avoid race conditions.
Dependencies
~0–265KB