Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kurtbuilds/modenv
A CLI to easily manage .env files and keep them consistent. It is simple, fast, error resistant, and composable.
https://github.com/kurtbuilds/modenv
cli dotenv environment-variables rust
Last synced: 5 days ago
JSON representation
A CLI to easily manage .env files and keep them consistent. It is simple, fast, error resistant, and composable.
- Host: GitHub
- URL: https://github.com/kurtbuilds/modenv
- Owner: kurtbuilds
- License: mit
- Created: 2021-09-24T05:23:15.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-15T22:26:11.000Z (3 months ago)
- Last Synced: 2024-10-13T19:08:37.504Z (24 days ago)
- Topics: cli, dotenv, environment-variables, rust
- Language: Rust
- Homepage:
- Size: 112 KB
- Stars: 55
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 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