herdux-cli 0.4.2 → 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 (68) hide show
  1. package/README.md +116 -241
  2. package/README.pt-BR.md +120 -215
  3. package/dist/commands/backup.d.ts.map +1 -1
  4. package/dist/commands/backup.js +12 -1
  5. package/dist/commands/backup.js.map +1 -1
  6. package/dist/commands/clean.d.ts.map +1 -1
  7. package/dist/commands/clean.js +12 -2
  8. package/dist/commands/clean.js.map +1 -1
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +19 -2
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/create.d.ts.map +1 -1
  13. package/dist/commands/create.js +13 -2
  14. package/dist/commands/create.js.map +1 -1
  15. package/dist/commands/docker.d.ts +3 -0
  16. package/dist/commands/docker.d.ts.map +1 -0
  17. package/dist/commands/docker.js +106 -0
  18. package/dist/commands/docker.js.map +1 -0
  19. package/dist/commands/doctor.d.ts.map +1 -1
  20. package/dist/commands/doctor.js +8 -2
  21. package/dist/commands/doctor.js.map +1 -1
  22. package/dist/commands/drop.d.ts.map +1 -1
  23. package/dist/commands/drop.js +14 -2
  24. package/dist/commands/drop.js.map +1 -1
  25. package/dist/commands/inspect.d.ts +3 -0
  26. package/dist/commands/inspect.d.ts.map +1 -0
  27. package/dist/commands/inspect.js +29 -0
  28. package/dist/commands/inspect.js.map +1 -0
  29. package/dist/commands/list.d.ts.map +1 -1
  30. package/dist/commands/list.js +11 -2
  31. package/dist/commands/list.js.map +1 -1
  32. package/dist/commands/restore.d.ts.map +1 -1
  33. package/dist/commands/restore.js +10 -1
  34. package/dist/commands/restore.js.map +1 -1
  35. package/dist/commands/version.d.ts.map +1 -1
  36. package/dist/commands/version.js +32 -17
  37. package/dist/commands/version.js.map +1 -1
  38. package/dist/core/interfaces/database-engine.interface.d.ts +1 -1
  39. package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -1
  40. package/dist/index.js +31 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/infra/docker/docker.service.d.ts +14 -0
  43. package/dist/infra/docker/docker.service.d.ts.map +1 -0
  44. package/dist/infra/docker/docker.service.js +83 -0
  45. package/dist/infra/docker/docker.service.js.map +1 -0
  46. package/dist/infra/engines/engine-factory.d.ts.map +1 -1
  47. package/dist/infra/engines/engine-factory.js +3 -0
  48. package/dist/infra/engines/engine-factory.js.map +1 -1
  49. package/dist/infra/engines/inspect-backup.d.ts +13 -0
  50. package/dist/infra/engines/inspect-backup.d.ts.map +1 -0
  51. package/dist/infra/engines/inspect-backup.js +97 -0
  52. package/dist/infra/engines/inspect-backup.js.map +1 -0
  53. package/dist/infra/engines/mysql/mysql.engine.d.ts +1 -1
  54. package/dist/infra/engines/mysql/mysql.engine.d.ts.map +1 -1
  55. package/dist/infra/engines/mysql/mysql.engine.js +4 -1
  56. package/dist/infra/engines/mysql/mysql.engine.js.map +1 -1
  57. package/dist/infra/engines/resolve-connection.d.ts.map +1 -1
  58. package/dist/infra/engines/resolve-connection.js +78 -55
  59. package/dist/infra/engines/resolve-connection.js.map +1 -1
  60. package/dist/infra/engines/sqlite/sqlite-env.d.ts +2 -0
  61. package/dist/infra/engines/sqlite/sqlite-env.d.ts.map +1 -0
  62. package/dist/infra/engines/sqlite/sqlite-env.js +24 -0
  63. package/dist/infra/engines/sqlite/sqlite-env.js.map +1 -0
  64. package/dist/infra/engines/sqlite/sqlite.engine.d.ts +21 -0
  65. package/dist/infra/engines/sqlite/sqlite.engine.d.ts.map +1 -0
  66. package/dist/infra/engines/sqlite/sqlite.engine.js +207 -0
  67. package/dist/infra/engines/sqlite/sqlite.engine.js.map +1 -0
  68. package/package.json +4 -1
package/README.pt-BR.md CHANGED
@@ -8,70 +8,59 @@
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
  Uma CLI rápida e interativa que remove a fricção dos workflows diários com bancos de dados locais, especialmente ao lidar com múltiplas instâncias e grandes datasets.
14
14
 
15
- ![Version](https://img.shields.io/badge/version-0.4.2-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)
19
19
  ![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=flat&logo=mysql&logoColor=white)
20
+ ![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat&logo=sqlite&logoColor=white)
20
21
  [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=flat&logo=github)](https://github.com/sponsors/eduardozaniboni)
21
22
  [![Buy Me A Coffee](https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=flat&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/eduardozaniboni)
22
23
 
23
24
  > Otimizado para ambientes locais e de desenvolvimento. O uso em produção é suportado com configuração explícita.
24
25
 
25
- <!-- <p align="center">
26
- <img src=".github/herdux.gif" alt="herdux terminal gif" width="1220" />
27
- </p> -->
28
-
29
26
  ---
30
27
 
31
- ## Início Rápido
28
+ ## Início Rápido
32
29
 
33
30
  ```bash
34
31
  npm install -g herdux-cli
35
32
 
36
- # Você pode usar 'herdux' ou o alias mais curto 'hdx'
33
+ # Use 'herdux' ou o alias mais curto 'hdx'
37
34
  hdx doctor
38
35
  herdux list
39
36
  ```
40
37
 
41
- É só isso. Você já está gerenciando bancos de dados.
42
-
43
38
  ---
44
39
 
45
- ## 🔌 Engines Suportadas
40
+ ## Engines Suportadas
46
41
 
47
42
  | Engine | Status | Ferramentas Cliente Necessárias |
48
43
  | ---------- | ------ | ------------------------------- |
49
44
  | PostgreSQL | ✅ | `psql`, `pg_dump`, `pg_restore` |
50
45
  | MySQL | ✅ | `mysql`, `mysqldump` |
46
+ | SQLite | ✅ | `sqlite3` |
51
47
 
52
- O Herdux detecta automaticamente a engine a partir do seu perfil de servidor ou da flag `--engine`. PostgreSQL é o padrão quando nenhuma engine é especificada.
48
+ Use `--engine <nome>` ou configure a engine em um perfil salvo. PostgreSQL é o padrão.
53
49
 
54
50
  ```bash
55
- # PostgreSQL (padrão)
56
- herdux list
57
- herdux create mydb
58
-
59
- # MySQL
60
- herdux --engine mysql list
61
- herdux --engine mysql create mydb
62
-
63
- # Ou salve no perfil e esqueça
64
- herdux config add mysql-local --port 3306 --user root --password secret --engine mysql
65
- herdux list -s mysql-local
51
+ herdux list # PostgreSQL (padrão)
52
+ herdux --engine mysql list # MySQL
53
+ herdux --engine sqlite list # SQLite (baseado em arquivos, sem servidor)
54
+ herdux list -s meu-perfil # Usando um perfil de servidor salvo
66
55
  ```
67
56
 
68
57
  ---
69
58
 
70
59
  ## Por que Herdux?
71
60
 
72
- Gerenciar bancos de dados locais através de scripts bash ou binários crus é repetitivo, propenso a erros e doloroso em escala.
61
+ Gerenciar bancos de dados locais por meio de binários brutos é repetitivo, propenso a erros e diferente para cada engine.
73
62
 
74
- ### ❌ Sem Herdux
63
+ **Antes:**
75
64
 
76
65
  ```bash
77
66
  # Backup PostgreSQL
@@ -80,15 +69,14 @@ pg_dump -U postgres -h localhost -p 5416 -Fc -f ./backups/mydb.dump mydb
80
69
  # Backup MySQL
81
70
  mysqldump -u root -h localhost -P 3306 -p mydb > ./backups/mydb.sql
82
71
 
83
- # Dropar manualmente, restaurar, verificar ferramentas...
84
72
  # Flags diferentes, ferramentas diferentes, memória muscular diferente para cada engine.
85
73
  ```
86
74
 
87
- ### ✅ Com Herdux
75
+ **Depois:**
88
76
 
89
77
  ```bash
90
78
  herdux backup mydb --drop --yes # Backup + drop em um comando
91
- herdux restore ./backups/mydb.dump --db mydb # Cria o banco (se faltar) e detecta o formato
79
+ herdux restore ./backups/mydb.dump --db mydb # Detecta formato, cria DB se necessário
92
80
  herdux clean # Multi-seleção e batch-drop de bancos
93
81
  herdux doctor # Verificação completa do sistema
94
82
  ```
@@ -97,79 +85,23 @@ Mesmos comandos. Qualquer engine. Menos flags. Menos erros. Zero fadiga de termi
97
85
 
98
86
  ---
99
87
 
100
- ## 🎯 Para quem é o Herdux?
101
-
102
- O **Herdux** foi construído _por desenvolvedores, para desenvolvedores_.
103
-
104
- Ele nasceu da frustração diária de ter que constantemente restaurar backups para testar um estado específico, dropar bancos corrompidos durante o desenvolvimento e lidar com binários crus de bancos de dados toda hora.
105
-
106
- Ele é especificamente projetado para desenvolvedores que:
107
-
108
- - Gerenciam infraestruturas locais e precisam verificar o tamanho dos discos antes de popular novos bancos.
109
- - Querem clonar, popular (seed) e resetar bancos de dados rapidamente sem precisar ler documentações complexas.
110
- - Precisam de fluxos seguros de backup & restore que não dependam de scripts bash frágeis.
111
- - Preferem ferramentas focadas no terminal (terminal-first).
112
- - Querem resolução previsível de conexões sem mágicas ocultas.
113
- - Trabalham com **múltiplas engines de banco de dados** (PostgreSQL, MySQL) e querem uma interface unificada.
114
-
115
- Se você gerencia bancos de dados localmente e compartilha dessa dor, o Herdux foi criado para você.
116
-
117
- ---
118
-
119
- ## 🚀 Funcionalidades Principais
120
-
121
- - **🔌 Suporte Multi-Engine** — Suporte de primeira classe para PostgreSQL e MySQL. Mesmos comandos, mesmo workflow, qualquer engine.
122
- - **📋 Listagem Inteligente** — Estratégia otimizada para clusters massivos. Flag opcional `--size` para análise de uso de disco, ordenado do maior para o menor.
123
- - **💾 Backup & Restore Inteligente** — Suporta formatos Custom (`.dump`) e Plain (`.sql`). Detecta automaticamente a ferramenta correta para restauração.
124
- - **🧹 Limpeza em Massa** — Multi-seleção de bancos, backup opcional e batch-drop. Recupere espaço em disco instantaneamente.
125
- - **🩺 Diagnóstico do Sistema** — Verificação completa de saúde com um único comando: binários, autenticação e conectividade.
126
- - **⚙️ Perfis Persistentes** — Salve configurações de servidor nomeadas com tipo de engine. Alterne entre ambientes com `-s pg16`.
127
- - **🎯 Resolução Inteligente de Conexão e Engine** — Flags CLI explícitas → perfis → padrões salvos → auto-descoberta. Sempre previsível.
128
-
129
- ---
130
-
131
- ## 💡 Filosofia
132
-
133
- **Herdux** combina _herd_ (manada/rebanho) e _UX_ — entregando uma melhor Developer Experience ao gerenciar seus clusters de bancos de dados. O nome reflete nosso foco em melhorar a experiência de desenvolvimento ao gerenciar "manadas" de bancos.
134
-
135
- O **Herdux** segue três princípios:
136
-
137
- - **Segurança primeiro** — Nunca apaga dados sem confirmação explícita ou um backup verificado.
138
- - **Explícito sobre implícito** — A resolução de conexão e engine segue uma prioridade estrita e documentada. Sem mágica.
139
- - **Otimização de workflow** — Cada comando é projetado para te salvar de tarefas repetitivas no terminal.
140
-
141
- ---
142
-
143
- ## 🔒 Segurança
144
-
145
- O **Herdux** trata operações destrutivas com cuidado:
146
-
147
- - **Nunca dropa um banco** sem confirmação explícita
148
- - **Aborta toda a operação** se um backup de segurança falhar durante o `herdux clean`
149
- - **Valida códigos de saída das ferramentas de backup** antes de considerar um backup bem-sucedido
150
- - **Requer a flag `--drop`** intencionalmente — dropar nunca é o padrão
151
- - **`--yes` deve ser combinado com `--drop`** — não é possível pular confirmação sozinho
152
-
153
- > Se você solicitar um backup antes de dropar e esse backup falhar, o **Herdux** para imediatamente. Nenhum dado é perdido.
154
-
155
- ---
156
-
157
- ## 🧩 Requisitos
88
+ ## Requisitos
158
89
 
159
90
  - **Node.js** 18 ou superior
160
- - **Para PostgreSQL:** `psql`, `pg_dump`, `pg_restore` instalados e disponíveis no `PATH`
161
- - **Para MySQL:** `mysql`, `mysqldump` instalados e disponíveis no `PATH`
91
+ - **Para PostgreSQL:** `psql`, `pg_dump`, `pg_restore` instalados e no `PATH`
92
+ - **Para MySQL:** `mysql`, `mysqldump` instalados e no `PATH`
93
+ - **Para SQLite:** `sqlite3` instalado e no `PATH`
162
94
 
163
95
  > [!TIP]
164
- > Execute `herdux doctor` após a instalação para verificar se tudo está configurado corretamente. O comando doctor verifica as ferramentas da engine ativa.
96
+ > Execute `herdux doctor` após a instalação para verificar se tudo está configurado corretamente.
165
97
 
166
98
  ---
167
99
 
168
- ## 📦 Instalação
100
+ ## Instalação
169
101
 
170
102
  **npm (recomendado):**
171
103
 
172
- > **⚠️ IMPORTANTE:** Você precisa usar a flag `-g` (global) para que a CLI fique disponível no seu terminal.
104
+ > **Importante:** Use a flag `-g` para que a CLI fique disponível em qualquer lugar no terminal.
173
105
 
174
106
  ```bash
175
107
  npm install -g herdux-cli
@@ -187,9 +119,7 @@ npm link
187
119
 
188
120
  ---
189
121
 
190
- ## 🛠️ Comandos
191
-
192
- Todos os comandos funcionam tanto com PostgreSQL quanto com MySQL. Use `--engine mysql` ou configure a engine no seu perfil de servidor.
122
+ ## Comandos
193
123
 
194
124
  ### `herdux version`
195
125
 
@@ -202,11 +132,7 @@ herdux --engine mysql version
202
132
 
203
133
  ### `herdux doctor`
204
134
 
205
- Executa uma verificação completa de saúde do sistema:
206
-
207
- - Verifica se as ferramentas cliente necessárias estão instaladas e acessíveis (específicas por engine)
208
- - Tenta uma conexão real usando a configuração resolvida
209
- - Testa autenticação contra o servidor alvo
135
+ Executa uma verificação completa do sistema: verifica ferramentas cliente, testa conectividade e valida autenticação.
210
136
 
211
137
  ```bash
212
138
  herdux doctor
@@ -215,17 +141,17 @@ herdux --engine mysql doctor
215
141
 
216
142
  ---
217
143
 
218
- ### 📋 `herdux list`
144
+ ### `herdux list`
219
145
 
220
146
  Lista todos os bancos de dados no servidor conectado.
221
147
 
222
148
  ```bash
223
- herdux list # Listagem rápida (nome, owner, encoding)
224
- herdux ls --size # Inclui tamanho em disco, ordenado do maior menor
149
+ herdux list # Nome, owner, encoding
150
+ herdux ls --size # Inclui tamanho em disco, ordenado do maior para o menor
225
151
  ```
226
152
 
227
153
  > [!NOTE]
228
- > A flag `--size` calcula o uso físico de disco. Em servidores com dezenas de bancos multi-GB, isso pode levar alguns minutos dependendo da velocidade do disco.
154
+ > A flag `--size` calcula o uso físico de disco. Em servidores com dezenas de bancos de vários GBs, isso pode levar alguns minutos.
229
155
 
230
156
  ---
231
157
 
@@ -234,8 +160,8 @@ herdux ls --size # Inclui tamanho em disco, ordenado do maior → menor
234
160
  Cria um novo banco de dados.
235
161
 
236
162
  ```bash
237
- herdux create meu_novo_db
238
- herdux --engine mysql create meu_novo_db
163
+ herdux create meu_novo_banco
164
+ herdux --engine mysql create meu_novo_banco
239
165
  ```
240
166
 
241
167
  ### `herdux drop <nome>`
@@ -243,209 +169,188 @@ herdux --engine mysql create meu_novo_db
243
169
  Remove um banco de dados com confirmação interativa.
244
170
 
245
171
  ```bash
246
- herdux drop meu_banco_antigo
172
+ herdux drop banco_antigo
247
173
  ```
248
174
 
249
175
  ---
250
176
 
251
- ### 🧹 `herdux clean` — Limpeza em Massa
252
-
253
- Trabalhando com bancos de desenvolvimento cheios de seeds? Precisa recuperar espaço em disco rápido?
177
+ ### `herdux clean`
254
178
 
255
- `herdux clean` permite:
256
-
257
- - **Multi-seleção** de bancos a partir de uma interface interativa com checkboxes
258
- - **Gerar backups de segurança opcionais** antes de qualquer ação destrutiva
259
- - **Batch-drop** de todos os bancos selecionados com segurança
260
- - **Abortar imediatamente** se qualquer backup falhar, prevenindo perda de dados
179
+ Limpeza em massa interativa: selecione vários bancos, gere backups de segurança e remova-os em lote.
261
180
 
262
181
  ```bash
263
182
  herdux clean
264
183
  ```
265
184
 
266
- Projetado para o workflow real do desenvolvedor: clonar bancos, experimentar, depois limpar tudo de uma vez.
185
+ Aborta imediatamente se algum backup de segurança falhar. Nenhum dado é removido sem um backup confirmado.
267
186
 
268
187
  ---
269
188
 
270
- ### 📦 `herdux backup <banco>`
189
+ ### `herdux backup <database>`
271
190
 
272
- Gera um backup com timestamp em `./backups/`.
191
+ Cria um backup com timestamp em `~/.herdux/backups/` por padrão.
273
192
 
274
193
  ```bash
275
- herdux backup mydb # Formato custom (.dump para PG, .sql para MySQL)
194
+ herdux backup mydb # Formato nativo da engine (.dump para PG, .db para SQLite, .sql para MySQL)
276
195
  herdux backup mydb --format plain # SQL puro (.sql)
277
- herdux backup mydb --drop # Backup, depois pergunta se quer dropar
278
- herdux backup mydb --drop --yes # Backup + drop, sem perguntas
196
+ herdux backup mydb --drop # Backup e depois pergunta se quer dropar
197
+ herdux backup mydb --drop --yes # Backup + drop sem confirmação
279
198
  herdux backup mydb -o ./meus-backups # Diretório de saída personalizado
280
199
  ```
281
200
 
282
201
  | Opção | Descrição |
283
202
  | --------------------- | ---------------------------------------------------------- |
284
- | `-F, --format <tipo>` | `custom` (padrão, comprimido) ou `plain` (SQL puro) |
285
- | `-d, --drop` | Pergunta se deseja dropar o banco após backup bem-sucedido |
286
- | `-y, --yes` | Pula confirmação do drop (requer `--drop`) |
287
- | `-o, --output <dir>` | Diretório de saída (padrão: `./backups`) |
203
+ | `-F, --format <tipo>` | `custom` (padrão, nativo da engine) ou `plain` (SQL) |
204
+ | `-d, --drop` | Pergunta se quer dropar o banco após o backup bem-sucedido |
205
+ | `-y, --yes` | Pula a confirmação de drop (requer `--drop`) |
206
+ | `-o, --output <dir>` | Diretório de saída (padrão: `~/.herdux/backups`) |
288
207
 
289
208
  ---
290
209
 
291
- ### 📥 `herdux restore <arquivo>`
292
-
293
- Restaura um banco de dados a partir de um arquivo de backup. Detecta automaticamente o formato:
210
+ ### `herdux restore <arquivo>`
294
211
 
295
- - `.sql` usa a ferramenta de importação SQL apropriada
296
- - `.dump` ou qualquer outra extensão → usa a ferramenta de restore apropriada
212
+ Restaura um banco de dados a partir de um arquivo de backup. Detecta automaticamente o formato pela extensão.
297
213
 
298
214
  ```bash
299
215
  herdux restore ./backups/mydb_2026-02-23.dump --db mydb
300
216
  herdux restore ./exports/data.sql --db mydb
217
+ herdux restore archive.bkp --db mydb --format custom # Forçar formato
301
218
  ```
302
219
 
303
- Precisa sobrescrever a auto-detecção? Use `--format`:
220
+ O banco de dados é criado automaticamente se não existir.
221
+
222
+ > [!NOTE]
223
+ > Ao restaurar dumps de ambientes gerenciados (ex: AWS RDS), o Herdux configura a ferramenta de restauração para ignorar ownership e ACLs, evitando erros por roles de produção ausentes localmente.
224
+
225
+ ---
226
+
227
+ ### `herdux inspect <arquivo>`
228
+
229
+ Inspeciona o conteúdo de um arquivo de backup sem se conectar ao banco de dados. Funciona completamente offline.
230
+
231
+ | Extensão | Output |
232
+ | ----------------- | ------------------------------------------------------------------------------ |
233
+ | `.dump` | Formato custom do PostgreSQL: Table of Contents completo (`pg_restore --list`) |
234
+ | `.sql` | SQL puro (qualquer engine): declarações CREATE TABLE, VIEW, INDEX, SEQUENCE |
235
+ | `.db` / `.sqlite` | Arquivo SQLite: schema (`sqlite3 .schema`) |
304
236
 
305
237
  ```bash
306
- herdux restore arquivo.bkp --db mydb --format custom
307
- herdux restore script.txt --db mydb --format plain
238
+ hdx inspect backup.dump # Table of Contents de um dump custom do PostgreSQL
239
+ hdx inspect export.sql # CREATE statements extraídos de SQL puro
240
+ hdx inspect mydb.db # Schema do SQLite
308
241
  ```
309
242
 
310
- > [!NOTE]
311
- > Ao restaurar backups vindos de ambientes gerenciados (ex: AWS RDS), o Herdux configura automaticamente a engine subjacente para ignorar atribuições de permissões e roles. Isso evita erros com roles que existem em produção mas não no seu ambiente local. Se a engine de restauração concluir a operação com avisos não-fatais (como roles ausentes), o Herdux irá te informar no terminal e prosseguir normalmente sem interromper o fluxo.
243
+ ---
244
+
245
+ ### `herdux docker`
246
+
247
+ Gerencia containers de banco de dados rodando via Docker. Nao requer conexao ativa com o banco.
248
+
249
+ ```bash
250
+ hdx docker list # Lista containers postgres/mysql em execucao
251
+ hdx docker list --all # Inclui containers parados
252
+ hdx docker start pg-dev # Inicia um container parado
253
+ hdx docker stop pg-dev # Para um container em execucao
254
+ hdx docker stop pg-dev --remove # Para e remove o container
255
+ ```
312
256
 
313
257
  ---
314
258
 
315
- ## ⚙️ Configuração & Perfis de Servidor
259
+ ## Configuração e Perfis de Servidor
316
260
 
317
- O `herdux` armazena configurações localmente em `~/.herdux/config.json`.
261
+ A configuração é armazenada em `~/.herdux/config.json`.
318
262
 
319
- ### Definir Padrões Globais
263
+ ### Valores globais padrão
320
264
 
321
265
  ```bash
322
- herdux config set engine postgres # Engine padrão
266
+ herdux config set engine postgres
323
267
  herdux config set user postgres
324
268
  herdux config set password minha_senha
325
269
  herdux config set port 5432
326
270
  ```
327
271
 
328
- ### Perfis de Servidor Nomeados
329
-
330
- Gerencie múltiplas instâncias de banco de dados sem esforço:
272
+ ### Perfis de servidor nomeados
331
273
 
332
274
  ```bash
333
- # Perfis PostgreSQL
334
275
  herdux config add pg16 --port 5416
335
276
  herdux config add pg17 --port 5417 --user admin
336
-
337
- # Perfis MySQL (a engine é salva no perfil)
338
277
  herdux config add mysql-dev --port 3306 --user root --password secret --engine mysql
339
-
340
- # Servidores remotos
341
278
  herdux config add staging --host 192.168.0.10 --port 5432
342
279
  ```
343
280
 
344
- Depois conecte usando a flag `-s`:
281
+ Use perfis com a flag `-s`:
345
282
 
346
283
  ```bash
347
284
  herdux list -s pg16
348
285
  herdux backup mydb -s mysql-dev
349
286
  ```
350
287
 
351
- Ou simplesmente execute um comando sem flags — se você tiver perfis salvos, o Herdux mostrará um menu de seleção interativo exibindo a engine de cada perfil.
352
-
353
- ### Visualizar & Gerenciar Config
288
+ ### Gerenciar configuração
354
289
 
355
290
  ```bash
356
- herdux config list # Mostra todas as configurações e perfis salvos
357
- herdux config get port # Obtém um valor específico
358
- herdux config rm pg16 # Remove um perfil de servidor
359
- herdux config reset # Limpa toda a configuração
291
+ herdux config list # Mostrar todas as configurações e perfis
292
+ herdux config get port # Obter um valor específico
293
+ herdux config rm pg16 # Remover um perfil
294
+ herdux config reset # Limpar toda a configuração
360
295
  ```
361
296
 
362
297
  ---
363
298
 
364
- ## 🔌 Resolução de Conexão e Engine
365
-
366
- Ao resolver como se conectar e qual engine usar, o **Herdux** segue uma ordem de prioridade estrita e previsível:
367
-
368
- ### Prioridade da Engine
369
-
370
- | Prioridade | Fonte | Exemplo |
371
- | ---------- | ---------------- | -------------------------------- |
372
- | 1️⃣ | **Flag CLI** | `herdux --engine mysql list` |
373
- | 2️⃣ | **Perfil** | Campo `engine` do perfil |
374
- | 3️⃣ | **Padrão salvo** | `herdux config set engine mysql` |
375
- | 4️⃣ | **Fallback** | `postgres` |
376
-
377
- ### Prioridade da Conexão
378
-
379
- | Prioridade | Fonte | Exemplo |
380
- | ---------- | ---------------------- | ------------------------------------------------------- |
381
- | 1️⃣ | **Flags CLI** | `herdux list --port 5417` |
382
- | 2️⃣ | **Perfil de servidor** | `herdux list -s pg16` |
383
- | 3️⃣ | **Padrões salvos** | `herdux config set port 5432` |
384
- | 4️⃣ | **Auto-descoberta** | Escaneia portas comuns; pergunta se encontrar múltiplas |
385
-
386
- Isso significa que a entrada explícita sempre vence. Sem surpresas.
387
-
388
- ---
389
-
390
- ## 🤔 Por que não pgAdmin / phpMyAdmin?
391
-
392
- O **Herdux** não é um substituto de GUI.
393
- É um acelerador de workflow para desenvolvedores que vivem no terminal.
394
-
395
- Sem GUI. Sem overhead. Só velocidade.
396
-
397
- ---
398
-
399
- ## 🧠 Princípios de Design
299
+ ## Resolução de Conexão e Engine
400
300
 
401
- - Sem padrões ocultos (hidden defaults).
402
- - Sem mágicas destrutivas.
403
- - Resolução determinística de conexão e engine.
404
- - Comandos explícitos e combináveis.
405
- - Engine-agnostic: mesma interface, qualquer banco de dados.
301
+ O Herdux segue uma prioridade estrita e previsível ao resolver como se conectar.
406
302
 
407
- ---
303
+ **Prioridade de engine:**
408
304
 
409
- ## 🐳 Suporte Docker (Em Breve)
305
+ | Prioridade | Fonte | Exemplo |
306
+ | ---------- | ------------ | -------------------------------- |
307
+ | 1 | Flag CLI | `herdux --engine mysql list` |
308
+ | 2 | Perfil | Campo `engine` do perfil |
309
+ | 3 | Padrão salvo | `herdux config set engine mysql` |
310
+ | 4 | Fallback | `postgres` |
410
311
 
411
- O **Herdux** poderá detectar e interagir com instâncias de banco de dados rodando dentro de containers Docker — listando, conectando e gerenciando-as tão naturalmente quanto instâncias locais.
312
+ **Prioridade de conexão:**
412
313
 
413
- ---
314
+ | Prioridade | Fonte | Exemplo |
315
+ | ---------- | -------------- | ------------------------------------------ |
316
+ | 1 | Flags CLI | `herdux list --port 5417` |
317
+ | 2 | Perfil | `herdux list -s pg16` |
318
+ | 3 | Padrões salvos | `herdux config set port 5432` |
319
+ | 4 | Auto-discovery | Escaneia portas comuns; pergunta se vários |
414
320
 
415
- ## 🗺 Roadmap
416
-
417
- Consulte o [ROADMAP.md](./ROADMAP.md) para ver nossos planos futuros detalhados, incluindo integração com Docker e backups criptografados.
321
+ Input explícito sempre vence. Sem surpresas.
418
322
 
419
323
  ---
420
324
 
421
- ## 🤝 Contribuindo
422
-
423
- PRs são bem-vindas! Por favor, abra uma issue primeiro para discutir mudanças significativas.
325
+ ## Contribuindo
424
326
 
425
327
  ```bash
426
328
  git clone https://github.com/herdux/herdux-cli.git
427
329
  cd herdux-cli
428
330
  npm install
429
- npm run dev
430
331
 
431
- # Executar testes unitários
432
- npm run test:unit
433
- # Executar testes E2E (requer Docker)
434
- npm run test:e2e:pgsql
435
- npm run test:e2e:mysql
332
+ npm run test:unit # Testes unitários (238 testes, todas as engines)
333
+ npm run test:integration # Testes de integração
334
+ npm run test:e2e:pgsql # Testes E2E para PostgreSQL (requer Docker)
335
+ npm run test:e2e:mysql # Testes E2E para MySQL (requer Docker)
336
+ npm run test:e2e:sqlite # Testes E2E para SQLite (requer sqlite3)
436
337
  ```
437
338
 
339
+ O Herdux segue limites arquiteturais estritos: comandos são agnósticos de engine, engines encapsulam todo comportamento específico de banco, e todos os binários são isolados por adaptadores. Mantenha esses limites ao contribuir.
340
+
341
+ PRs são bem-vindos. Abra uma issue primeiro para mudanças maiores.
342
+
438
343
  ---
439
344
 
440
- ## ☕ Apoie o Projeto
345
+ ## Suporte
441
346
 
442
- Se o **Herdux** tem te salvado horas de dores de cabeça com bancos de dados, considere apoiar o projeto! Isso ajuda demais a mantê-lo ativo e open-source.
347
+ Se o Herdux te salvou horas de debugging e trabalho com bancos de dados, considere apoiar o projeto:
443
348
 
444
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>
445
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>
446
351
 
447
352
  ---
448
353
 
449
- ## 📄 Licença
354
+ ## Licença
450
355
 
451
356
  MIT
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5D"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G5D"}
@@ -8,12 +8,23 @@ import { homedir } from "os";
8
8
  export function registerBackupCommand(program) {
9
9
  program
10
10
  .command("backup <database>")
11
- .description("Create a backup of a database")
11
+ .description("Create a backup of a database to a local file")
12
+ .addHelpText("after", `
13
+ Examples:
14
+ hdx backup mydb
15
+ hdx backup mydb --output /tmp/backups
16
+ hdx backup mydb --format plain
17
+ hdx backup mydb --drop --yes # Backup then drop without confirmation
18
+ hdx backup mydb --engine mysql`)
12
19
  .option("-o, --output <dir>", "Output directory for the backup (overrides global config)")
13
20
  .option("-d, --drop", "Ask to drop the database after a successful backup")
14
21
  .option("-y, --yes", "Skip confirmation when dropping (requires --drop)")
15
22
  .option("-F, --format <type>", "Backup format format (custom, plain)", "custom")
16
23
  .action(async (database, cmdOpts) => {
24
+ if (/[\s;|&`$<>(){}\\]/.test(database)) {
25
+ console.error(chalk.red(`\n✖ Invalid database name "${database}". Avoid spaces and special characters (; | & \` $ < > ( ) { } \\).\n`));
26
+ process.exit(1);
27
+ }
17
28
  try {
18
29
  const rawOpts = program.opts();
19
30
  const { engine, opts } = await resolveEngineAndConnection(rawOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuH3D"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmI3D"}
@@ -3,12 +3,21 @@ import ora from "ora";
3
3
  import prompts from "prompts";
4
4
  import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.js";
5
5
  import * as config from "../infra/config/config.service.js";
6
+ import { logger } from "../presentation/logger.js";
6
7
  import { join } from "path";
7
8
  import { homedir } from "os";
8
9
  export function registerCleanCommand(program) {
9
10
  program
10
11
  .command("clean")
11
- .description("Interactive bulk cleanup tool to drop multiple databases")
12
+ .description("Interactively select and drop multiple databases at once")
13
+ .addHelpText("after", `
14
+ Examples:
15
+ hdx clean
16
+ hdx clean --engine mysql
17
+ hdx clean --host 192.168.1.1 --user admin
18
+
19
+ Note: You will be prompted to select databases, optionally backup them first,
20
+ and confirm before any data is deleted.`)
12
21
  .action(async () => {
13
22
  try {
14
23
  const rawOpts = program.opts();
@@ -87,7 +96,8 @@ export function registerCleanCommand(program) {
87
96
  console.error(chalk.red(` ↳ ${message}`));
88
97
  }
89
98
  }
90
- console.log(chalk.green(`\n✔ Clean operation completed!`));
99
+ logger.blank();
100
+ logger.success("Clean operation completed.");
91
101
  }
92
102
  catch (err) {
93
103
  const message = err instanceof Error ? err.message : String(err);
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,MAAM,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,IAAI,OAAO,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,aAAa;gBACnB,OAAO,EACL,+DAA+D;gBACjE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9B,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,KAAK,GAAG;oBACxC,KAAK,EAAE,EAAE,CAAC,IAAI;iBACf,CAAC,CAAC;gBACH,GAAG,EAAE,CAAC;gBACN,IAAI,EAAE,qCAAqC;aAC5C,CAAC,CAAC;YAEH,MAAM,WAAW,GAAa,QAAQ,CAAC,WAAW,CAAC;YAEnD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,kBAAkB,WAAW,CAAC,MAAM,4BAA4B,CACjE,CACF,CAAC;YAEF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC;gBACnC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,aAAa;gBACnB,OAAO,EACL,gEAAgE;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBAEvC,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,SAAS,GACb,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAEjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACjD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,OAAO,GAAG,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC/C,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,QAAQ,CACT,CAAC;wBACF,OAAO,CAAC,OAAO,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;oBACxC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;wBACvC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC3C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iEAAiE,CAClE,CACF,CAAC;wBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;gBAClC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK,CAAC,GAAG,CAChB,4CAA4C,WAAW,CAAC,MAAM,4CAA4C,CAC3G;gBACD,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7C,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBACpC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;oBACvC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6K5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwM5D"}