modenv
is a tool to update and keep consistent multiple .env
files.
It is designed with these objectives in mind:
- Simple and intuitive user experience.
modenv
greatly prioritizes a minimal, intuitive user-interface, helpful error messages and command suggestions to make it easy to use for beginners and experts. - Lighting fast.
modenv
is written in Rust, compiled natively, and therefore extremely fast. - Error resistant.
modenv
offers dry-runs and does not perform destructive operations without explicit confirmation. - Composable.
modenv
uses reasonable error codes, so it can be used effectively in a CI/CD pipeline or build scripts.
It's easiest to understand the usage of modenv
by following the lifecycle of a typical project.
modenv init
This command creates .env
, env.example
, and .env.production
files, and adds .env*
to your .gitignore
file
(still allowing .env.example
).
modenv -a PORT=3000 HOST=0.0.0.0
This command adds PORT=5000
and HOST=0.0.0.0
to the first default env file found, typically .env
.
The -a
flag causes it to add PORT
and HOST
with blank values to all other env files found.
If the key already exists, this operation will fail unless -f
is also passed.
The default env file is the first found of .env.local
, .env.development
, and .env
.
Next, add values to .env.production
(specified by -p
):
modenv -p PORT=5000 HOST=0.0.0.0
modenv check
This subcommand checks for missing values from your env files. Using a reference file (chosen implicitly, as described above, or
explicitly with a command flag), check
reports on missing keys.
This command returns non-zero if there are missing keys, so it can be used as part of a CI/CD pipeline.
If you want to update files with blank values for missing keys:
modenv check -f
This command additionally will replicate comments and ordering from the reference file to the other files.
cargo install modenv
export $(modenv show)
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request