Skip to content

jonathan-shemer/chenv

Repository files navigation

      _
  ___| |__   ___ _ ____   __
 / __| '_ \ / _ | '_ \ \ / /
| (__| | | |  __| | | \ V /
 \___|_| |_|\___|_| |_|\_/ . modern local environment management

Project Status PyPI Python Version License

Read the documentation at https://chenv.readthedocs.io/ Tests Codecov

pre-commit Black

This command-line interface creates and manages local .env files from various sources.

Coupled with python-dotenv for python, or dotenv for node.js development, it provides better, more consistent environment variable management and developement.

Installation

To install chenv, run this command in your terminal:

$ pip install --user chenv

Also make sure that your $PATH includes $HOME/.local/bin. If not, add this line to your .bashrc / .zshrc:

export PATH=$HOME/.local/bin:$PATH;

Usage

chenv's usage looks like:

$ chenv COMMAND [ARGS]

Commands currently include:

blank

Choose to set .env as a new, blank, .env.blank file.

heroku

Choose to set .env from a remote heroku app config-vars, as .env.[app-name].

  • -t <team>, --team <team>
     

    Pre-fill team name

  • -a <app>, --app <app>
     

    Pre-fill app name

local

Choose to set .env from a local, pre-exsiting .env.* file.

  • filename
    Pre-fill file-suffix name

Project Configurations

chenv also provides two file types that manipulate the output of new .env.* files being set.

.envignore

Specifies intentionally unwanted environment-variables. Each line in a envignore file specifies a pattern.

When deciding whether to ignore an environment variable, chenv checks it's key against the list of patterns described in this file.

Pattern:.envignore uses the unix filename pattern matching, similar to .gitignore's, and as specified at https://docs.python.org/3/library/fnmatch.html

.envmerge

Sepecifies environment variables to merge / override after any input is chosen. This provides consistency to preffered settings such as the logging-level, or NODE_ENV for local development usage in node.js.