# @ipulsehq/pulseenv-cli

CLI om lokale `.env`-bestanden te syncen met **PulseEnv** (`env.ipulse.one`). Inloggen via **iPulse OAuth** (Authorization Code + PKCE, loopback redirect). Config-driven en runtime-agnostisch (Node 18+ en Bun). Admin-only.

## Installeren

```bash
npm i -D @ipulsehq/pulseenv-cli     # of: bun add -d @ipulsehq/pulseenv-cli
```

Voeg een script toe (optioneel):

```json
{ "scripts": { "pulseenv": "pulseenv" } }
```

## Configureren

Plaats `pulseenv.config.json` in de root van je repo:

```json
{
  "project": "PulseGuard",
  "apps": {
    "api":        { "environment": "local - api",        "file": "apps/api/.env",        "overlay": true },
    "app":        { "environment": "local - app",        "file": "apps/app/.env" }
  },
  "overlayKeys": ["DATABASE_URL", "REDIS_DB"],
  "users": { "<jouw-email@bedrijf.nl>": "jouwnaam" }
}
```

| Veld | Omschrijving |
|---|---|
| `project` | PulseEnv-projectnaam |
| `apps` | Map van app-key → `{ environment, file, overlay? }` |
| `apps[].environment` | PulseEnv environment-naam (bv. `local - api`) |
| `apps[].file` | Doelbestand relatief aan de repo-root |
| `apps[].overlay` | `true` = pas de per-user overlay toe (DB-keys e.d.) |
| `overlayKeys` | Keys die per user verschillen (default `DATABASE_URL`, `REDIS_DB`) |
| `users` | Optioneel: iPulse-email → overlay-naam |
| `apiUrl` / `issuer` / `clientId` / `port` | Overrides (defaults: env.ipulse.one / ipulse.one / pulseenv-cli / 47654) |

## Gebruik

```bash
pulseenv login                 # browser-login via iPulse
pulseenv whoami
pulseenv pull                  # alle apps, jouw user-overlay
pulseenv pull --app api
pulseenv push --app api        # gedeelde base terug naar PulseEnv
pulseenv push --user           # jouw overlay-keys -> user - <naam>
pulseenv status --app api
```

## Base + overlay

Per app staat er een gedeelde **base** in PulseEnv. Voor keys die per ontwikkelaar verschillen (`overlayKeys`) is er een **overlay** `user - <naam>`. Bij `pull` mergt de CLI base + overlay (overlay wint). De ingelogde email bepaalt standaard de overlay. Tokens staan in `~/.pulseenv/<issuer-host>.json` (auto-refresh).
