Skip to content

A CLI to easily manage .env files and keep them consistent. It is simple, fast, error resistant, and composable.

License

Notifications You must be signed in to change notification settings

kurtbuilds/modenv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Contributors Stars Build Status Downloads Crates.io

Modenv

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.

Usage

It's easiest to understand the usage of modenv by following the lifecycle of a typical project.

Initialize the environment

modenv init

This command creates .env, env.example, and .env.production files, and adds .env* to your .gitignore file (still allowing .env.example).

Add to the environment

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.

Add to the production environment

Next, add values to .env.production (specified by -p):

modenv -p PORT=5000 HOST=0.0.0.0

Check consistency of your env files

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.

Installation

cargo install modenv

Additional Tips & Tricks

Source an env file

export $(modenv show)

Contributing

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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

About

A CLI to easily manage .env files and keep them consistent. It is simple, fast, error resistant, and composable.

Topics

Resources

License

Stars

Watchers

Forks