233 lines
5.7 KiB
Markdown
233 lines
5.7 KiB
Markdown
# env-pro
|
|
|
|
Smart Environment Variable Manager CLI - Manage environment variables with multi-profile support, encryption, validation, and template generation.
|
|
|
|
## Features
|
|
|
|
- **Multi-profile Management**: Create, switch, and manage multiple environment profiles (dev, staging, prod)
|
|
- **AES-256 Encryption**: Encrypt sensitive values using AES-256-GCM encryption with secure key derivation
|
|
- **Schema Validation**: Validate environment variables against JSON Schema or Pydantic models
|
|
- **Template Generation**: Generate .env files for new projects
|
|
from templates with scaffolding- **Profile Commands**: Commands to scaffold, list, switch, and diff environment profiles
|
|
- **Encrypt/Decrypt Operations**: Encrypt and decrypt individual values or entire files with key management
|
|
- **Interactive Editor**: Interactive mode for adding/editing variables with prompts and validation
|
|
- **GitOps Integration**: Generate .gitignore entries and SOPS/age integration for secrets
|
|
|
|
## Installation
|
|
|
|
### From PyPI (recommended)
|
|
|
|
```bash
|
|
pip install env-pro
|
|
```
|
|
|
|
### From source
|
|
|
|
```bash
|
|
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/env-pro.git
|
|
cd env-pro
|
|
pip install -e .
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
### Initialize a project
|
|
|
|
```bash
|
|
cd my-project
|
|
env-pro init
|
|
```
|
|
|
|
### Create a profile
|
|
|
|
```bash
|
|
env-pro profile create staging
|
|
env-pro profile use staging
|
|
```
|
|
|
|
### Add variables
|
|
|
|
```bash
|
|
env-pro add DATABASE_URL postgresql://localhost:5432/db
|
|
env-pro add SECRET_KEY my-secret --encrypt
|
|
env-pro add API_KEY --interactive
|
|
```
|
|
|
|
### List variables
|
|
|
|
```bash
|
|
env-pro list
|
|
```
|
|
|
|
## Commands
|
|
|
|
### Core Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro init` | Initialize env-pro in current directory |
|
|
| `env-pro add KEY VALUE` | Add a new environment variable |
|
|
| `env-pro set KEY VALUE` | Set or update a variable |
|
|
| `env-pro get KEY` | Get a variable value |
|
|
| `env-pro list` | List all variables |
|
|
| `env-pro delete KEY` | Delete a variable |
|
|
|
|
### Profile Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro profile create NAME` | Create a new profile |
|
|
| `env-pro profile list` | List all profiles |
|
|
| `env-pro profile use NAME` | Set active profile |
|
|
| `env-pro profile switch NAME` | Switch to a profile |
|
|
| `env-pro profile delete NAME` | Delete a profile |
|
|
| `env-pro profile diff PROFILE1 PROFILE2` | Compare two profiles |
|
|
|
|
### Encryption Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro key generate` | Generate a new encryption key |
|
|
| `env-pro key rotate` | Rotate the encryption key |
|
|
| `env-pro key show` | Show key status |
|
|
| `env-pro encrypt value VALUE` | Encrypt a value |
|
|
| `env-pro decrypt VALUE` | Decrypt a value |
|
|
|
|
### Template Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro template list` | List available templates |
|
|
| `env-pro template show NAME` | Show template details |
|
|
| `env-pro template apply NAME` | Apply a template |
|
|
| `env-pro template create NAME` | Create a custom template |
|
|
|
|
### Validation Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro validate` | Validate against schema |
|
|
| `env-pro check` | Check required variables |
|
|
|
|
### Utility Commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `env-pro gitignore` | Generate .gitignore entries |
|
|
| `env-pro example` | Generate .env.example |
|
|
| `env-pro export` | Export variables |
|
|
| `env-pro sops` | Show SOPS integration info |
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Description |
|
|
|----------|-------------|
|
|
| `ENV_PRO_KEY` | Override encryption key (not recommended) |
|
|
| `ENV_PRO_HOME` | Custom config home directory |
|
|
| `ENV_PRO_PROFILE` | Override active profile |
|
|
| `EDITOR` | Editor for interactive editing |
|
|
|
|
### Configuration Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `~/.config/env-pro/config.yaml` | Global configuration |
|
|
| `.env-profiles/{profile}/.env` | Environment variables per profile |
|
|
| `.env-profiles/.active` | Active profile tracking |
|
|
| `.env.schema.yaml` | Schema validation file |
|
|
|
|
## Templates
|
|
|
|
Built-in templates:
|
|
|
|
- `fastapi` - FastAPI Python application
|
|
- `django` - Django Python application
|
|
- `nodejs` - Node.js application
|
|
- `python` - Generic Python application
|
|
- `golang` - Go application
|
|
- `minimal` - Minimal .env template
|
|
|
|
## Encryption
|
|
|
|
env-pro uses AES-256-GCM encryption with PBKDF2 key derivation:
|
|
|
|
1. Generate a key: `env-pro key generate`
|
|
2. Encrypt values: `env-pro add SECRET value --encrypt`
|
|
3. Key is stored securely in system keyring
|
|
|
|
## Schema Validation
|
|
|
|
Create `.env.schema.yaml` in your project root:
|
|
|
|
```yaml
|
|
variables:
|
|
DATABASE_URL:
|
|
type: url
|
|
required: true
|
|
description: Database connection URL
|
|
DEBUG:
|
|
type: bool
|
|
default: false
|
|
API_KEY:
|
|
type: string
|
|
required: true
|
|
```
|
|
|
|
Then validate with `env-pro validate`.
|
|
|
|
## GitOps Integration
|
|
|
|
For GitOps workflows with encrypted secrets:
|
|
|
|
```bash
|
|
# Generate .gitignore entries
|
|
env-pro gitignore >> .gitignore
|
|
|
|
# Show SOPS integration info
|
|
env-pro sops
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Development Setup
|
|
|
|
```bash
|
|
env-pro init
|
|
env-pro profile create dev
|
|
env-pro profile use dev
|
|
env-pro add DATABASE_URL postgresql://localhost:5432/devdb
|
|
env-pro add DEBUG true
|
|
env-pro template apply fastapi --var APP_NAME=MyAPI
|
|
```
|
|
|
|
### Production Deployment
|
|
|
|
```bash
|
|
env-pro profile create prod
|
|
env-pro profile use prod
|
|
env-pro add DATABASE_URL postgresql://prod:5432/proddb --encrypt
|
|
env-pro add API_KEY --interactive --encrypt
|
|
env-pro validate
|
|
env-pro example > .env.production.example
|
|
```
|
|
|
|
### Profile Comparison
|
|
|
|
```bash
|
|
env-pro profile diff dev prod
|
|
```
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Make your changes
|
|
4. Run tests: `pytest tests/ -v`
|
|
5. Submit a pull request
|
|
|
|
## License
|
|
|
|
MIT License - see [LICENSE](LICENSE) file for details.
|