Skip to main content

Generate example .env files from existing .env files with placeholder detection.

Project description

Envertor 🔍

PyPI version Python License: MIT

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.envertor is a safe backup — rename it to .env or diff it against your existing one

License

MIT © Samin Yeasar

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

envertor-0.1.1.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

envertor-0.1.1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

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

Hashes for envertor-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f49d18b4d8e834ffd9bf6de7ee5beea103a8ee2319b46c584e8510621138c5a1
MD5 d4f85da8d084a06f32f8cc2e00aa1921
BLAKE2b-256 e44b1912f548f0603be672d9de89268631fb15891717f84b7bcd5c50c9384374

See more details on using hashes here.

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

Hashes for envertor-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0aff682de7eb352ff574972a6b9adeabadb769214bf6da5315d514c4cbce5985
MD5 09a1074cf650c9d8c3a3e84cedccda23
BLAKE2b-256 e769cbed5e0a89f99e288194b7773595c3744c7de4833a44c8b674f21d524121

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page