Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

README

        



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