Generate example .env files from existing .env files with placeholder detection.
Project description
Envertor is a CLI tool that generates .env.example files by extracting environment variables from existing .env files or by scanning Python and JavaScript/TypeScript projects. It also helps keep your secrets safe with automatic .gitignore protection and CI/CD-ready parity checks.
Install
pip install envertor
Development install:
pip install -e .
Usage
Generate .env.example from an existing .env
Strips real values and replaces them with type-appropriate placeholders:
envertor -i .env -o .env.example
Original .env |
Generated .env.example |
|---|---|
SECRET=mysecret |
SECRET='' |
PORT=8080 |
PORT=0 |
DEBUG=true |
DEBUG=false |
RATE=3.14 |
RATE=0.0 |
Scan a project for environment variables
Detects env vars used in source code and generates .env.example from actual usage — no existing .env required:
envertor -p ./my-project -o .env.example
Limit scanning to a specific language:
envertor -p ./my-project --lang python
envertor -p ./my-project --lang js
Supports:
- Python:
os.getenv("VAR"),os.environ["VAR"],os.environ.get("VAR") - JS/TS:
process.env.VAR(.js,.ts,.jsx,.tsx)
Create .env from .env.example
Bootstrap a local .env from the example file so teammates can fill in their own values:
envertor --create-env # reads .env.example by default
envertor --create-env staging.env.example # reads a custom file
If .env already exists, writes .env.envertor instead to avoid overwriting.
Check parity between .env and .env.example
Explicitly verify that both files have the same keys. Designed for CI/CD pipelines — exits 1 on mismatch:
envertor --check
envertor --check --env-file /deploy/.env --example-file /repo/.env.example
Example output on failure:
[envertor] FAIL: Keys mismatch between .env and .env.example
Missing from .env: NEW_KEY
Missing from .env.example: OLD_KEY
Use in a pipeline:
# GitHub Actions example
- name: Check env parity
run: envertor --check --env-file .env --example-file .env.example
Show version
envertor -v
Automatic safety checks
Every time envertor runs, it performs these checks automatically:
.gitignore protection — ensures .env is listed in .gitignore. Creates the file if it doesn't exist:
[envertor] Created .gitignore with .env
[envertor] Added .env to .gitignore
Key parity warning — warns if .env and .env.example have different keys:
[envertor] WARNING: Keys in .env not documented in .env.example: DB_URL
[envertor] WARNING: Keys in .env.example not found in .env: NEW_KEY
Leftover values warning — warns if .env.example contains non-placeholder values (real secrets accidentally left behind):
[envertor] WARNING: .env.example has a real value set for API_KEY
Options
| Flag | Description |
|---|---|
-i, --input FILE |
Path to input .env file |
-o, --output FILE |
Path to output .env.example (default: .env.example) |
-p, --project DIR |
Project folder to scan for env variable usage |
--lang python|js|both |
Language filter for project scanning (default: both) |
--create-env [FILE] |
Create .env from FILE (default: .env.example) |
--check |
Check key parity and exit 1 on mismatch (CI/CD mode) |
--env-file FILE |
.env path for --check (default: .env) |
--example-file FILE |
.env.example path for --check (default: .env.example) |
-v, --version |
Show version |
Notes
- Automatically skips
node_modules/,venv/,__pycache__/,.next/,.git/,.idea/,.vscode/ - Regex-based scanning catches the most common patterns (
os.getenv,os.environ,process.env) .env.envertoris a safe backup — rename it to.envor diff it against your existing one
License
MIT © Samin Yeasar
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file envertor-0.1.1.tar.gz.
File metadata
- Download URL: envertor-0.1.1.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f49d18b4d8e834ffd9bf6de7ee5beea103a8ee2319b46c584e8510621138c5a1
|
|
| MD5 |
d4f85da8d084a06f32f8cc2e00aa1921
|
|
| BLAKE2b-256 |
e44b1912f548f0603be672d9de89268631fb15891717f84b7bcd5c50c9384374
|
File details
Details for the file envertor-0.1.1-py3-none-any.whl.
File metadata
- Download URL: envertor-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aff682de7eb352ff574972a6b9adeabadb769214bf6da5315d514c4cbce5985
|
|
| MD5 |
09a1074cf650c9d8c3a3e84cedccda23
|
|
| BLAKE2b-256 |
e769cbed5e0a89f99e288194b7773595c3744c7de4833a44c8b674f21d524121
|