herdux-cli 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +114 -246
  2. package/README.pt-BR.md +118 -220
  3. package/dist/commands/clean.d.ts.map +1 -1
  4. package/dist/commands/clean.js +3 -1
  5. package/dist/commands/clean.js.map +1 -1
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/create.js +3 -1
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/docker.d.ts +3 -0
  10. package/dist/commands/docker.d.ts.map +1 -0
  11. package/dist/commands/docker.js +106 -0
  12. package/dist/commands/docker.js.map +1 -0
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +2 -1
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/drop.d.ts.map +1 -1
  17. package/dist/commands/drop.js +3 -1
  18. package/dist/commands/drop.js.map +1 -1
  19. package/dist/commands/inspect.d.ts +3 -0
  20. package/dist/commands/inspect.d.ts.map +1 -0
  21. package/dist/commands/inspect.js +29 -0
  22. package/dist/commands/inspect.js.map +1 -0
  23. package/dist/commands/list.d.ts.map +1 -1
  24. package/dist/commands/list.js +3 -1
  25. package/dist/commands/list.js.map +1 -1
  26. package/dist/commands/version.d.ts.map +1 -1
  27. package/dist/commands/version.js +26 -16
  28. package/dist/commands/version.js.map +1 -1
  29. package/dist/index.js +4 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/infra/docker/docker.service.d.ts +14 -0
  32. package/dist/infra/docker/docker.service.d.ts.map +1 -0
  33. package/dist/infra/docker/docker.service.js +83 -0
  34. package/dist/infra/docker/docker.service.js.map +1 -0
  35. package/dist/infra/engines/inspect-backup.d.ts +13 -0
  36. package/dist/infra/engines/inspect-backup.d.ts.map +1 -0
  37. package/dist/infra/engines/inspect-backup.js +97 -0
  38. package/dist/infra/engines/inspect-backup.js.map +1 -0
  39. package/dist/infra/engines/mysql/mysql.engine.d.ts +1 -1
  40. package/dist/infra/engines/mysql/mysql.engine.d.ts.map +1 -1
  41. package/dist/infra/engines/mysql/mysql.engine.js +4 -1
  42. package/dist/infra/engines/mysql/mysql.engine.js.map +1 -1
  43. package/package.json +1 -1
package/README.md CHANGED
@@ -8,11 +8,11 @@
8
8
  <img src=".github/assets/logo.svg" alt="Herdux banner" style="max-width: 100%; width: 600px;" />
9
9
  </p>
10
10
 
11
- ## ⏭️ Herdux — Database Workflow CLI
11
+ ## Herdux — Database Workflow CLI
12
12
 
13
13
  A fast, interactive CLI that removes friction from daily local database workflows, especially when juggling multiple instances and large datasets.
14
14
 
15
- ![Version](https://img.shields.io/badge/version-0.5.0-blue.svg)
15
+ ![Version](https://img.shields.io/badge/version-0.7.0-blue.svg)
16
16
  ![License](https://img.shields.io/badge/license-MIT-green.svg)
17
17
  ![Node](https://img.shields.io/badge/node-18%2B-43853d.svg)
18
18
  ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=flat&logo=postgresql&logoColor=white)
@@ -23,27 +23,21 @@ A fast, interactive CLI that removes friction from daily local database workflow
23
23
 
24
24
  > Optimized for local and development environments. Production use is supported with explicit configuration.
25
25
 
26
- <!-- <p align="center">
27
- <img src=".github/herdux.gif" alt="herdux terminal gif" width="1220" />
28
- </p> -->
29
-
30
26
  ---
31
27
 
32
- ## Quick Start
28
+ ## Quick Start
33
29
 
34
30
  ```bash
35
31
  npm install -g herdux-cli
36
32
 
37
- # You can use either 'herdux' or the shorter 'hdx' alias
33
+ # Use either 'herdux' or the shorter 'hdx' alias
38
34
  hdx doctor
39
35
  herdux list
40
36
  ```
41
37
 
42
- That's it. You're managing databases.
43
-
44
38
  ---
45
39
 
46
- ## 🔌 Supported Engines
40
+ ## Supported Engines
47
41
 
48
42
  | Engine | Status | Client Tools Required |
49
43
  | ---------- | ------ | ------------------------------- |
@@ -51,57 +45,22 @@ That's it. You're managing databases.
51
45
  | MySQL | ✅ | `mysql`, `mysqldump` |
52
46
  | SQLite | ✅ | `sqlite3` |
53
47
 
54
- Herdux resolves the engine explicitly using a strict priority order (CLI flags profiles saved defaults → fallback).
55
-
56
- Internally, no command ever runs without a fully resolved engine.
48
+ Use `--engine <name>` or configure the engine in a saved profile. PostgreSQL is the default.
57
49
 
58
50
  ```bash
59
- # PostgreSQL (default)
60
- herdux list
61
- herdux create mydb
62
-
63
- # MySQL
64
- herdux --engine mysql list
65
- herdux --engine mysql create mydb
66
-
67
- # SQLite (file-based, no server required)
68
- herdux --engine sqlite list
69
- herdux --engine sqlite create mydb
70
-
71
- # Or save it in a profile and forget about it
72
- herdux config add mysql-local --port 3306 --user root --password secret --engine mysql
73
- herdux list -s mysql-local
51
+ herdux list # PostgreSQL (default)
52
+ herdux --engine mysql list # MySQL
53
+ herdux --engine sqlite list # SQLite (file-based, no server required)
54
+ herdux list -s my-profile # Using a saved server profile
74
55
  ```
75
56
 
76
57
  ---
77
58
 
78
- ## 🧠 How Herdux Thinks
79
-
80
- Herdux is designed around **strict separation of concerns**:
81
-
82
- - **Commands decide _what_ to do**
83
- - **Engines decide _how_ to do it**
84
- - **Binaries are never called directly by commands**
85
- - **All external behavior is isolated behind engine contracts**
86
-
87
- This architecture guarantees:
88
-
89
- - predictable behavior
90
- - engine-agnostic commands
91
- - safer destructive operations
92
- - easier extension to new databases
93
-
94
- If something feels “magical”, it’s probably wrong.
95
-
96
- Any change that breaks these boundaries is considered a bug.
97
-
98
- ---
99
-
100
59
  ## Why Herdux?
101
60
 
102
- Managing local databases through raw bash scripts or binaries is repetitive, error-prone, and painful at scale.
61
+ Managing local databases through raw binaries is repetitive, error-prone, and different for every engine.
103
62
 
104
- ### ❌ Without Herdux
63
+ **Before:**
105
64
 
106
65
  ```bash
107
66
  # PostgreSQL backup
@@ -110,15 +69,14 @@ pg_dump -U postgres -h localhost -p 5416 -Fc -f ./backups/mydb.dump mydb
110
69
  # MySQL backup
111
70
  mysqldump -u root -h localhost -P 3306 -p mydb > ./backups/mydb.sql
112
71
 
113
- # Manually drop, restore, check tools...
114
72
  # Different flags, different tools, different muscle memory for each engine.
115
73
  ```
116
74
 
117
- ### ✅ With Herdux
75
+ **After:**
118
76
 
119
77
  ```bash
120
78
  herdux backup mydb --drop --yes # Backup + drop in one shot
121
- herdux restore ./backups/mydb.dump --db mydb # Auto-creates DB if missing & detects format
79
+ herdux restore ./backups/mydb.dump --db mydb # Detects format, creates DB if missing
122
80
  herdux clean # Multi-select and batch-drop databases
123
81
  herdux doctor # Full system health check
124
82
  ```
@@ -127,80 +85,23 @@ Same commands. Any engine. Fewer flags. Fewer mistakes. Zero terminal fatigue.
127
85
 
128
86
  ---
129
87
 
130
- ## 🎯 Who is Herdux for?
131
-
132
- **Herdux** was built _for developers, by developers_.
133
-
134
- It was born from the daily frustration of constantly having to restore backups to test specific states, drop corrupted databases during development, and juggle raw database binaries.
135
-
136
- It is specifically designed for developers who:
137
-
138
- - Manage local infrastructures and need to check disk sizes before seeding new databases.
139
- - Want to quickly clone, seed, and reset databases without reading `man` pages.
140
- - Need safe backup & restore workflows that don't rely on fragile bash scripts.
141
- - Prefer terminal-first tooling.
142
- - Want predictable connection resolution without hidden magic.
143
- - Work with **multiple database engines** (PostgreSQL, MySQL, SQLite) and want a unified interface.
144
-
145
- If you manage databases locally, Herdux was created to solve your pain.
146
-
147
- ---
148
-
149
- ## 🚀 Key Features
150
-
151
- - **🔌 Multi-Engine Support** — First-class support for PostgreSQL, MySQL, and SQLite. Same commands, same workflow, any engine.
152
- - **📋 Smart Listing** — Optimized listing strategy for massive clusters. Optional `--size` flag for disk usage analysis, sorted largest-first.
153
- - **💾 Intelligent Backup & Restore** — Supports Custom (`.dump`) and Plain (`.sql`) formats. Auto-detects the right tool for restores.
154
- - **🧹 Bulk Cleanup** — Multi-select databases, optionally backup, and batch-drop them. Reclaim disk space instantly.
155
- - **🩺 System Diagnostics** — One-command health check verifying binaries, authentication, and connectivity.
156
- - **⚙️ Persistent Profiles** — Save named server configurations with engine type. Switch between environments with `-s pg16`.
157
- - **🎯 Smart Connection & Engine Resolution** — Explicit CLI flags → profiles → saved defaults → auto-discovery. Always predictable.
158
-
159
- ---
160
-
161
- ## 💡 Philosophy
162
-
163
- **Herdux** combines _herd_ and _UX_ — delivering a better developer experience when managing your local database clusters. The name reflects our focus on improving the developer experience of managing database herds.
164
-
165
- **Herdux** follows three principles:
166
-
167
- - **Safety first** — Never drops data without explicit confirmation or a verified backup.
168
- - **Explicit over implicit** — Connection and engine resolution follows a strict, documented priority. No magic.
169
- - **Developer workflow optimization** — Every command is designed to save you from repetitive terminal work.
170
-
171
- ---
172
-
173
- ## 🔒 Safety
174
-
175
- **Herdux** handles destructive operations with care:
176
-
177
- - **Never drops a database** unless explicit confirmation is given
178
- - **Aborts the entire operation** if a safety backup fails during `herdux clean`
179
- - **Validates backup tool exit codes** before considering a backup successful
180
- - **Requires `--drop` flag** intentionally — dropping is never the default
181
- - **`--yes` must be combined with `--drop`** — cannot skip confirmation alone
182
-
183
- > If you request a backup before dropping and that backup fails, **Herdux** stops immediately. No data is lost.
184
-
185
- ---
186
-
187
- ## 🧩 Requirements
88
+ ## Requirements
188
89
 
189
90
  - **Node.js** 18 or higher
190
- - **For PostgreSQL:** `psql`, `pg_dump`, `pg_restore` installed and available in your `PATH`
191
- - **For MySQL:** `mysql`, `mysqldump` installed and available in your `PATH`
192
- - **For SQLite:** `sqlite3` installed and available in your `PATH`
91
+ - **For PostgreSQL:** `psql`, `pg_dump`, `pg_restore` installed and in your `PATH`
92
+ - **For MySQL:** `mysql`, `mysqldump` installed and in your `PATH`
93
+ - **For SQLite:** `sqlite3` installed and in your `PATH`
193
94
 
194
95
  > [!TIP]
195
- > Run `herdux doctor` after installation to verify everything is set up correctly. The doctor command checks the tools for the active engine.
96
+ > Run `herdux doctor` after installation to verify everything is correctly set up.
196
97
 
197
98
  ---
198
99
 
199
- ## 📦 Installation
100
+ ## Installation
200
101
 
201
102
  **npm (recommended):**
202
103
 
203
- > **⚠️ IMPORTANT:** You must use the `-g` (global) flag for the CLI to be accessible anywhere in your terminal.
104
+ > **Important:** Use the `-g` flag so the CLI is accessible anywhere in your terminal.
204
105
 
205
106
  ```bash
206
107
  npm install -g herdux-cli
@@ -218,9 +119,7 @@ npm link
218
119
 
219
120
  ---
220
121
 
221
- ## 🛠️ Commands
222
-
223
- All commands work with PostgreSQL, MySQL, and SQLite. Use `--engine mysql` or `--engine sqlite`, or configure the engine in your server profile.
122
+ ## Commands
224
123
 
225
124
  ### `herdux version`
226
125
 
@@ -233,11 +132,7 @@ herdux --engine mysql version
233
132
 
234
133
  ### `herdux doctor`
235
134
 
236
- Runs a full system health check:
237
-
238
- - Verifies the required client tools are installed and reachable (engine-specific)
239
- - Attempts a live connection using the resolved configuration
240
- - Tests authentication against the target server
135
+ Runs a full system health check: verifies client tools, tests connectivity, and validates authentication.
241
136
 
242
137
  ```bash
243
138
  herdux doctor
@@ -246,17 +141,17 @@ herdux --engine mysql doctor
246
141
 
247
142
  ---
248
143
 
249
- ### 📋 `herdux list`
144
+ ### `herdux list`
250
145
 
251
146
  Lists all databases on the connected server.
252
147
 
253
148
  ```bash
254
- herdux list # Fast listing (name, owner, encoding)
255
- herdux ls --size # Includes disk size, sorted largest smallest
149
+ herdux list # Name, owner, encoding
150
+ herdux ls --size # Includes disk size, sorted largest to smallest
256
151
  ```
257
152
 
258
153
  > [!NOTE]
259
- > The `--size` flag calculates physical disk usage. On servers with dozens of multi-GB databases, this may take a few minutes depending on disk speed.
154
+ > The `--size` flag calculates physical disk usage. On servers with dozens of multi-GB databases, this may take a few minutes.
260
155
 
261
156
  ---
262
157
 
@@ -279,210 +174,183 @@ herdux drop my_old_db
279
174
 
280
175
  ---
281
176
 
282
- ### 🧹 `herdux clean` — Bulk Cleanup
283
-
284
- Working with seed-heavy development databases? Need to reclaim disk space fast?
285
-
286
- `herdux clean` allows you to:
177
+ ### `herdux clean`
287
178
 
288
- - **Multi-select** databases from an interactive checkbox UI
289
- - **Optionally generate safety backups** before any destructive action
290
- - **Batch-drop** all selected databases safely
291
- - **Abort immediately** if any backup fails, preventing data loss
179
+ Interactive bulk cleanup: multi-select databases, optionally back them up, and batch-drop them.
292
180
 
293
181
  ```bash
294
182
  herdux clean
295
183
  ```
296
184
 
297
- This is designed for the real-world dev workflow: clone databases, experiment, then clean up everything in one shot.
185
+ Aborts immediately if any safety backup fails. No data is dropped without a confirmed backup.
298
186
 
299
187
  ---
300
188
 
301
- ### 📦 `herdux backup <database>`
189
+ ### `herdux backup <database>`
302
190
 
303
- Generates a timestamped backup in `./backups/`.
191
+ Creates a timestamped backup in `~/.herdux/backups/` by default.
304
192
 
305
193
  ```bash
306
- herdux backup mydb # Custom format (.dump for PG, .sql for MySQL)
194
+ herdux backup mydb # Engine-native format (.dump for PG, .db for SQLite, .sql for MySQL)
307
195
  herdux backup mydb --format plain # Plain SQL (.sql)
308
- herdux backup mydb --drop # Backup, then ask to drop
309
- herdux backup mydb --drop --yes # Backup + drop, no questions
196
+ herdux backup mydb --drop # Backup, then prompt to drop
197
+ herdux backup mydb --drop --yes # Backup + drop, no confirmation
310
198
  herdux backup mydb -o ./my-backups # Custom output directory
311
199
  ```
312
200
 
313
- | Option | Description |
314
- | --------------------- | --------------------------------------------------- |
315
- | `-F, --format <type>` | `custom` (default, compressed) or `plain` (raw SQL) |
316
- | `-d, --drop` | Prompt to drop database after successful backup |
317
- | `-y, --yes` | Skip drop confirmation (requires `--drop`) |
318
- | `-o, --output <dir>` | Output directory (default: `./backups`) |
201
+ | Option | Description |
202
+ | --------------------- | ----------------------------------------------------- |
203
+ | `-F, --format <type>` | `custom` (default, engine-native) or `plain` (SQL) |
204
+ | `-d, --drop` | Prompt to drop the database after a successful backup |
205
+ | `-y, --yes` | Skip drop confirmation (requires `--drop`) |
206
+ | `-o, --output <dir>` | Output directory (default: `~/.herdux/backups`) |
319
207
 
320
208
  ---
321
209
 
322
- ### 📥 `herdux restore <file>`
210
+ ### `herdux restore <file>`
323
211
 
324
- Restores a database from a backup file. Automatically detects the format:
325
-
326
- - `.sql` → uses the appropriate SQL import tool
327
- - `.dump` or any other extension → uses the appropriate restore tool
212
+ Restores a database from a backup file. Auto-detects the format based on file extension.
328
213
 
329
214
  ```bash
330
215
  herdux restore ./backups/mydb_2026-02-23.dump --db mydb
331
216
  herdux restore ./exports/data.sql --db mydb
217
+ herdux restore archive.bkp --db mydb --format custom # Override auto-detection
332
218
  ```
333
219
 
334
- Need to override auto-detection? Use `--format`:
220
+ The target database is automatically created if it does not exist.
221
+
222
+ > [!NOTE]
223
+ > When restoring dumps from managed environments (e.g. AWS RDS), Herdux configures the restore tool to ignore ownership and role assignments, preventing errors from missing production roles.
224
+
225
+ ---
226
+
227
+ ### `herdux inspect <file>`
228
+
229
+ Inspects the contents of a backup file without connecting to a database. Completely offline.
230
+
231
+ | Extension | Output |
232
+ | ----------------- | ---------------------------------------------------------------------- |
233
+ | `.dump` | PostgreSQL custom format: full Table of Contents (`pg_restore --list`) |
234
+ | `.sql` | Plain SQL (any engine): CREATE TABLE, VIEW, INDEX, SEQUENCE statements |
235
+ | `.db` / `.sqlite` | SQLite database file: schema (`sqlite3 .schema`) |
335
236
 
336
237
  ```bash
337
- herdux restore archive.bkp --db mydb --format custom
338
- herdux restore script.txt --db mydb --format plain
238
+ hdx inspect backup.dump # Table of Contents of a PostgreSQL custom dump
239
+ hdx inspect export.sql # CREATE statements extracted from plain SQL
240
+ hdx inspect mydb.db # SQLite schema
339
241
  ```
340
242
 
341
- > [!NOTE]
342
- > When restoring dumps from managed environments (e.g., AWS RDS), Herdux automatically configures the underlying engine to ignore ownership and role assignments. This prevents errors caused by production roles that do not exist locally. If the restore engine completes with non-fatal warnings (such as missing roles), Herdux will inform you and proceed normally rather than failing.
243
+ ---
244
+
245
+ ### `herdux docker`
246
+
247
+ Manages database containers running via Docker. Does not require a live database connection.
248
+
249
+ ```bash
250
+ hdx docker list # List running postgres/mysql containers
251
+ hdx docker list --all # Include stopped containers
252
+ hdx docker start pg-dev # Start a stopped container
253
+ hdx docker stop pg-dev # Stop a running container
254
+ hdx docker stop pg-dev --remove # Stop and remove the container
255
+ ```
343
256
 
344
257
  ---
345
258
 
346
- ## ⚙️ Configuration & Server Profiles
259
+ ## Configuration & Server Profiles
347
260
 
348
- `herdux` stores configuration locally at `~/.herdux/config.json`.
261
+ Configuration is stored at `~/.herdux/config.json`.
349
262
 
350
- ### Set Global Defaults
263
+ ### Global defaults
351
264
 
352
265
  ```bash
353
- herdux config set engine postgres # Default engine
266
+ herdux config set engine postgres
354
267
  herdux config set user postgres
355
268
  herdux config set password my_secret
356
269
  herdux config set port 5432
357
270
  ```
358
271
 
359
- ### Named Server Profiles
360
-
361
- Manage multiple database instances effortlessly:
272
+ ### Named server profiles
362
273
 
363
274
  ```bash
364
- # PostgreSQL profiles
365
275
  herdux config add pg16 --port 5416
366
276
  herdux config add pg17 --port 5417 --user admin
367
-
368
- # MySQL profiles (engine is saved in the profile)
369
277
  herdux config add mysql-dev --port 3306 --user root --password secret --engine mysql
370
-
371
- # Remote servers
372
278
  herdux config add staging --host 192.168.0.10 --port 5432
373
279
  ```
374
280
 
375
- Then connect using the `-s` flag:
281
+ Use profiles with the `-s` flag:
376
282
 
377
283
  ```bash
378
284
  herdux list -s pg16
379
285
  herdux backup mydb -s mysql-dev
380
286
  ```
381
287
 
382
- Or just run a command without flags — if you have saved profiles, Herdux will show an interactive selection menu displaying the engine for each profile.
383
-
384
- ### View & Manage Config
288
+ ### Manage config
385
289
 
386
290
  ```bash
387
- herdux config list # Show all saved settings and profiles
291
+ herdux config list # Show all settings and profiles
388
292
  herdux config get port # Get a specific value
389
- herdux config rm pg16 # Remove a server profile
293
+ herdux config rm pg16 # Remove a profile
390
294
  herdux config reset # Clear all configuration
391
295
  ```
392
296
 
393
297
  ---
394
298
 
395
- ## 🔌 Connection & Engine Resolution
396
-
397
- When resolving how to connect and which engine to use, **Herdux** follows a strict, predictable priority order:
398
-
399
- ### Engine Priority
400
-
401
- | Priority | Source | Example |
402
- | -------- | ------------------ | -------------------------------- |
403
- | 1️⃣ | **CLI flag** | `herdux --engine mysql list` |
404
- | 2️⃣ | **Server profile** | Profile's `engine` field |
405
- | 3️⃣ | **Saved default** | `herdux config set engine mysql` |
406
- | 4️⃣ | **Fallback** | `postgres` |
407
-
408
- ### Connection Priority
409
-
410
- | Priority | Source | Example |
411
- | -------- | ------------------ | --------------------------------------------- |
412
- | 1️⃣ | **CLI flags** | `herdux list --port 5417` |
413
- | 2️⃣ | **Server profile** | `herdux list -s pg16` |
414
- | 3️⃣ | **Saved defaults** | `herdux config set port 5432` |
415
- | 4️⃣ | **Auto-discovery** | Scans common ports; prompts if multiple found |
416
-
417
- This means explicit input always wins. No surprises.
418
-
419
- ---
420
-
421
- ## 🤔 Why not pgAdmin / phpMyAdmin?
299
+ ## Connection & Engine Resolution
422
300
 
423
- **Herdux** is not a GUI replacement.
424
- It's a workflow accelerator for developers who live in the terminal.
301
+ Herdux follows a strict, predictable priority when resolving how to connect.
425
302
 
426
- No GUI. No overhead. Just speed.
303
+ **Engine priority:**
427
304
 
428
- ---
429
-
430
- ## 🧠 Design Principles
431
-
432
- - No hidden defaults.
433
- - No destructive magic.
434
- - Deterministic connection and engine resolution.
435
- - Explicit and composable commands.
436
- - Engine-agnostic: same interface, any database.
437
-
438
- ---
305
+ | Priority | Source | Example |
306
+ | -------- | -------------- | -------------------------------- |
307
+ | 1 | CLI flag | `herdux --engine mysql list` |
308
+ | 2 | Server profile | Profile's `engine` field |
309
+ | 3 | Saved default | `herdux config set engine mysql` |
310
+ | 4 | Fallback | `postgres` |
439
311
 
440
- ## 🐳 Docker Support
312
+ **Connection priority:**
441
313
 
442
- > Docker MUST NOT be required for normal CLI usage.
443
- > Docker is currently used internally for end-to-end testing to validate real database workflows.
444
- > Runtime Docker integration (detecting and managing live containers) is planned.
314
+ | Priority | Source | Example |
315
+ | -------- | -------------- | --------------------------------------------- |
316
+ | 1 | CLI flags | `herdux list --port 5417` |
317
+ | 2 | Server profile | `herdux list -s pg16` |
318
+ | 3 | Saved defaults | `herdux config set port 5432` |
319
+ | 4 | Auto-discovery | Scans common ports; prompts if multiple found |
445
320
 
446
- ---
447
-
448
- ## 🗺 Roadmap
449
-
450
- See [ROADMAP.md](./ROADMAP.md) for our detailed future plans, including Docker integration and encrypted backups.
321
+ Explicit input always wins. No surprises.
451
322
 
452
323
  ---
453
324
 
454
- ## 🤝 Contributing
455
-
456
- PRs are welcome! Please open an issue first to discuss major changes.
325
+ ## Contributing
457
326
 
458
327
  ```bash
459
328
  git clone https://github.com/herdux/herdux-cli.git
460
329
  cd herdux-cli
461
330
  npm install
462
- npm run dev
463
331
 
464
- # Run the unit test suite
465
- npm run test:unit
466
- # Run the E2E test suites (requires Docker)
467
- npm run test:e2e:pgsql
468
- npm run test:e2e:mysql
332
+ npm run test:unit # Unit tests (238 tests, all engines)
333
+ npm run test:integration # Integration tests
334
+ npm run test:e2e:pgsql # E2E tests for PostgreSQL (requires Docker)
335
+ npm run test:e2e:mysql # E2E tests for MySQL (requires Docker)
336
+ npm run test:e2e:sqlite # E2E tests for SQLite (requires sqlite3)
469
337
  ```
470
338
 
471
- > Herdux follows strict architectural boundaries.
472
- > Commands are engine-agnostic, engines encapsulate all database-specific behavior, and all binaries are isolated behind adapters.
473
- > Please keep these boundaries intact when contributing.
339
+ Herdux follows strict architectural boundaries: commands are engine-agnostic, engines encapsulate all database-specific behavior, and all binaries are isolated behind adapters. Keep these boundaries intact when contributing.
340
+
341
+ PRs are welcome. Open an issue first for major changes.
474
342
 
475
343
  ---
476
344
 
477
- ## Support the Project
345
+ ## Support
478
346
 
479
- If **Herdux** has saved you hours of debugging and database wrangling, consider supporting the project! It helps keep it active and open-source.
347
+ If Herdux has saved you hours of debugging and database wrangling, consider supporting the project:
480
348
 
481
349
  <a href="https://github.com/sponsors/eduardozaniboni" target="_blank"><img src="https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=for-the-badge&logo=github" alt="GitHub Sponsors"></a>
482
350
  <a href="https://www.buymeacoffee.com/eduardozaniboni" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 28px !important;width: 100px !important;" ></a>
483
351
 
484
352
  ---
485
353
 
486
- ## 📄 License
354
+ ## License
487
355
 
488
356
  MIT