herdux-cli 0.2.2 → 0.3.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.
- package/LICENSE +21 -0
- package/README.md +390 -385
- package/README.pt-BR.md +390 -384
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +8 -9
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +9 -10
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/config.js +2 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +5 -5
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +23 -69
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +5 -5
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +8 -6
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +6 -7
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +7 -8
- package/dist/commands/version.js.map +1 -1
- package/dist/core/interfaces/database-engine.interface.d.ts +78 -0
- package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -0
- package/dist/core/interfaces/database-engine.interface.js +2 -0
- package/dist/core/interfaces/database-engine.interface.js.map +1 -0
- package/dist/index.js +0 -0
- package/dist/infra/command-runner.d.ts.map +1 -0
- package/dist/infra/command-runner.js.map +1 -0
- package/dist/{services → infra/config}/config.service.d.ts +1 -1
- package/dist/infra/config/config.service.d.ts.map +1 -0
- package/dist/infra/config/config.service.js.map +1 -0
- package/dist/{services/environment.service.d.ts → infra/engines/postgres/postgres-env.d.ts} +1 -1
- package/dist/infra/engines/postgres/postgres-env.d.ts.map +1 -0
- package/dist/{services/environment.service.js → infra/engines/postgres/postgres-env.js} +5 -5
- package/dist/infra/engines/postgres/postgres-env.js.map +1 -0
- package/dist/infra/engines/postgres/postgres.engine.d.ts +17 -0
- package/dist/infra/engines/postgres/postgres.engine.d.ts.map +1 -0
- package/dist/infra/engines/postgres/postgres.engine.js +377 -0
- package/dist/infra/engines/postgres/postgres.engine.js.map +1 -0
- package/dist/infra/engines/postgres/resolve-connection.d.ts +3 -0
- package/dist/infra/engines/postgres/resolve-connection.d.ts.map +1 -0
- package/dist/{utils → infra/engines/postgres}/resolve-connection.js +10 -9
- package/dist/infra/engines/postgres/resolve-connection.js.map +1 -0
- package/dist/infra/utils/detect-binary.d.ts.map +1 -0
- package/dist/{utils → infra/utils}/detect-binary.js +1 -1
- package/dist/infra/utils/detect-binary.js.map +1 -0
- package/dist/presentation/logger.d.ts.map +1 -0
- package/dist/presentation/logger.js.map +1 -0
- package/package.json +69 -57
- package/dist/core/command-runner.d.ts.map +0 -1
- package/dist/core/command-runner.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/services/backup.service.d.ts +0 -4
- package/dist/services/backup.service.d.ts.map +0 -1
- package/dist/services/backup.service.js +0 -99
- package/dist/services/backup.service.js.map +0 -1
- package/dist/services/config.service.d.ts.map +0 -1
- package/dist/services/config.service.js.map +0 -1
- package/dist/services/environment.service.d.ts.map +0 -1
- package/dist/services/environment.service.js.map +0 -1
- package/dist/services/postgres.service.d.ts +0 -27
- package/dist/services/postgres.service.d.ts.map +0 -1
- package/dist/services/postgres.service.js +0 -180
- package/dist/services/postgres.service.js.map +0 -1
- package/dist/utils/detect-binary.d.ts.map +0 -1
- package/dist/utils/detect-binary.js.map +0 -1
- package/dist/utils/resolve-connection.d.ts +0 -3
- package/dist/utils/resolve-connection.d.ts.map +0 -1
- package/dist/utils/resolve-connection.js.map +0 -1
- /package/dist/{core → infra}/command-runner.d.ts +0 -0
- /package/dist/{core → infra}/command-runner.js +0 -0
- /package/dist/{services → infra/config}/config.service.js +0 -0
- /package/dist/{utils → infra/utils}/detect-binary.d.ts +0 -0
- /package/dist/{core → presentation}/logger.d.ts +0 -0
- /package/dist/{core → presentation}/logger.js +0 -0
package/README.pt-BR.md
CHANGED
|
@@ -1,384 +1,390 @@
|
|
|
1
|
-
🇧🇷 Português | 🇺🇸 [English](./README.md)
|
|
2
|
-
|
|
3
|
-
# Herdux — Database Workflow CLI
|
|
4
|
-
|
|
5
|
-
<p align="center">
|
|
6
|
-
<strong>Infrastructure-grade power. Developer-grade experience.</strong>
|
|
7
|
-
</p>
|
|
8
|
-
|
|
9
|
-
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.
|
|
10
|
-
|
|
11
|
-

|
|
13
|
-

|
|
14
|
-
[](https://github.com/sponsors/eduardozaniboni)
|
|
15
|
-
[](https://www.buymeacoffee.com/eduardozaniboni)
|
|
16
|
-
|
|
17
|
-
> Otimizado para ambientes locais e de desenvolvimento. O uso em produção é suportado com configuração explícita.
|
|
18
|
-
|
|
19
|
-
<!-- <p align="center">
|
|
20
|
-
<img src=".github/herdux.gif" alt="herdux terminal gif" width="1220" />
|
|
21
|
-
</p> -->
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## ⚡ Início Rápido
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm install -g herdux-cli
|
|
29
|
-
|
|
30
|
-
# Você pode usar 'herdux' ou o alias mais curto 'hdx'
|
|
31
|
-
hdx doctor
|
|
32
|
-
herdux list
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
É só isso. Você já está gerenciando bancos de dados.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Por que Herdux?
|
|
40
|
-
|
|
41
|
-
Gerenciar bancos de dados locais através de scripts bash ou binários crus é repetitivo, propenso a erros e doloroso em escala.
|
|
42
|
-
|
|
43
|
-
### ❌ Sem Herdux
|
|
44
|
-
|
|
45
|
-
```bash
|
|
46
|
-
# Fazer backup de um banco
|
|
47
|
-
pg_dump -U postgres -h localhost -p 5416 -Fc -f ./backups/mydb_2026-02-23.dump mydb
|
|
48
|
-
|
|
49
|
-
# Depois dropar manualmente
|
|
50
|
-
psql -U postgres -h localhost -p 5416 -c "DROP DATABASE mydb;"
|
|
51
|
-
|
|
52
|
-
# Restaurar do backup
|
|
53
|
-
pg_restore -U postgres -h localhost -p 5416 -d mydb --clean --if-exists ./backups/mydb_2026-02-23.dump
|
|
54
|
-
|
|
55
|
-
# Verificar se as ferramentas estão instaladas
|
|
56
|
-
psql --version && pg_dump --version && pg_restore --version
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### ✅ Com Herdux
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
herdux backup mydb --drop --yes # Backup + drop em um comando
|
|
63
|
-
herdux restore ./backups/mydb.dump --db mydb # Cria o banco (se faltar) e detecta o formato
|
|
64
|
-
herdux clean # Multi-seleção e batch-drop de bancos
|
|
65
|
-
herdux doctor # Verificação completa do sistema
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Menos flags. Menos erros. Zero fadiga de terminal.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## 🎯 Para quem é o Herdux?
|
|
73
|
-
|
|
74
|
-
O **Herdux** foi construído
|
|
75
|
-
|
|
76
|
-
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.
|
|
77
|
-
|
|
78
|
-
Ele é especificamente projetado para desenvolvedores que:
|
|
79
|
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- **
|
|
108
|
-
- **
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
- **
|
|
118
|
-
- **
|
|
119
|
-
- **
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
- **
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
>
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
npm
|
|
153
|
-
npm
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
herdux
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
>
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
- **
|
|
222
|
-
- **
|
|
223
|
-
- **
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
herdux backup mydb
|
|
240
|
-
herdux backup mydb --
|
|
241
|
-
herdux backup mydb --drop
|
|
242
|
-
herdux backup mydb
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
|
248
|
-
| `-
|
|
249
|
-
| `-
|
|
250
|
-
| `-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
- `.
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
herdux restore ./
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
herdux restore
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
herdux config set
|
|
284
|
-
herdux config set
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
herdux config add
|
|
294
|
-
herdux config add
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
herdux
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
herdux config
|
|
309
|
-
herdux config
|
|
310
|
-
herdux config
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
|
322
|
-
|
|
|
323
|
-
|
|
|
324
|
-
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
- Sem
|
|
343
|
-
-
|
|
344
|
-
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
npm
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
1
|
+
🇧🇷 Português | 🇺🇸 [English](./README.md)
|
|
2
|
+
|
|
3
|
+
# Herdux — Database Workflow CLI
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Infrastructure-grade power. Developer-grade experience.</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
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.
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+

|
|
13
|
+

|
|
14
|
+
[](https://github.com/sponsors/eduardozaniboni)
|
|
15
|
+
[](https://www.buymeacoffee.com/eduardozaniboni)
|
|
16
|
+
|
|
17
|
+
> Otimizado para ambientes locais e de desenvolvimento. O uso em produção é suportado com configuração explícita.
|
|
18
|
+
|
|
19
|
+
<!-- <p align="center">
|
|
20
|
+
<img src=".github/herdux.gif" alt="herdux terminal gif" width="1220" />
|
|
21
|
+
</p> -->
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## ⚡ Início Rápido
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g herdux-cli
|
|
29
|
+
|
|
30
|
+
# Você pode usar 'herdux' ou o alias mais curto 'hdx'
|
|
31
|
+
hdx doctor
|
|
32
|
+
herdux list
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
É só isso. Você já está gerenciando bancos de dados.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Por que Herdux?
|
|
40
|
+
|
|
41
|
+
Gerenciar bancos de dados locais através de scripts bash ou binários crus é repetitivo, propenso a erros e doloroso em escala.
|
|
42
|
+
|
|
43
|
+
### ❌ Sem Herdux
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Fazer backup de um banco
|
|
47
|
+
pg_dump -U postgres -h localhost -p 5416 -Fc -f ./backups/mydb_2026-02-23.dump mydb
|
|
48
|
+
|
|
49
|
+
# Depois dropar manualmente
|
|
50
|
+
psql -U postgres -h localhost -p 5416 -c "DROP DATABASE mydb;"
|
|
51
|
+
|
|
52
|
+
# Restaurar do backup
|
|
53
|
+
pg_restore -U postgres -h localhost -p 5416 -d mydb --clean --if-exists ./backups/mydb_2026-02-23.dump
|
|
54
|
+
|
|
55
|
+
# Verificar se as ferramentas estão instaladas
|
|
56
|
+
psql --version && pg_dump --version && pg_restore --version
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### ✅ Com Herdux
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
herdux backup mydb --drop --yes # Backup + drop em um comando
|
|
63
|
+
herdux restore ./backups/mydb.dump --db mydb # Cria o banco (se faltar) e detecta o formato
|
|
64
|
+
herdux clean # Multi-seleção e batch-drop de bancos
|
|
65
|
+
herdux doctor # Verificação completa do sistema
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Menos flags. Menos erros. Zero fadiga de terminal.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🎯 Para quem é o Herdux?
|
|
73
|
+
|
|
74
|
+
O **Herdux** foi construído _por desenvolvedores, para desenvolvedores_.
|
|
75
|
+
|
|
76
|
+
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.
|
|
77
|
+
|
|
78
|
+
Ele é especificamente projetado para desenvolvedores que:
|
|
79
|
+
|
|
80
|
+
- Gerenciam infraestruturas locais e precisam verificar o tamanho dos discos antes de popular novos bancos.
|
|
81
|
+
- Querem clonar, popular (seed) e resetar bancos de dados rapidamente sem precisar ler documentações complexas.
|
|
82
|
+
- Precisam de fluxos seguros de backup & restore que não dependam de scripts bash frágeis.
|
|
83
|
+
- Preferem ferramentas focadas no terminal (terminal-first).
|
|
84
|
+
- Querem resolução previsível de conexões sem mágicas ocultas.
|
|
85
|
+
|
|
86
|
+
Se você gerencia bancos de dados localmente e compartilha dessa dor, o Herdux foi criado para você.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 🚀 Funcionalidades Principais
|
|
91
|
+
|
|
92
|
+
- **📋 Listagem Inteligente** — Estratégia otimizada para clusters massivos. Flag opcional `--size` para análise de uso de disco, ordenado do maior para o menor.
|
|
93
|
+
- **💾 Backup & Restore Inteligente** — Suporta formatos Custom (`.dump`) e Plain (`.sql`). Detecta automaticamente a ferramenta correta para restauração.
|
|
94
|
+
- **🧹 Limpeza em Massa** — Multi-seleção de bancos, backup opcional e batch-drop. Recupere espaço em disco instantaneamente.
|
|
95
|
+
- **🩺 Diagnóstico do Sistema** — Verificação completa de saúde com um único comando: binários, autenticação e conectividade.
|
|
96
|
+
- **⚙️ Perfis Persistentes** — Salve configurações de servidor nomeadas. Alterne entre ambientes com `-s pg16`.
|
|
97
|
+
- **🎯 Resolução Inteligente de Conexão** — Flags CLI explícitas → perfis → padrões salvos → auto-descoberta. Sempre previsível.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 💡 Filosofia
|
|
102
|
+
|
|
103
|
+
**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.
|
|
104
|
+
|
|
105
|
+
O **Herdux** segue três princípios:
|
|
106
|
+
|
|
107
|
+
- **Segurança primeiro** — Nunca apaga dados sem confirmação explícita ou um backup verificado.
|
|
108
|
+
- **Explícito sobre implícito** — A resolução de conexão segue uma prioridade estrita e documentada. Sem mágica.
|
|
109
|
+
- **Otimização de workflow** — Cada comando é projetado para te salvar de tarefas repetitivas no terminal.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🔒 Segurança
|
|
114
|
+
|
|
115
|
+
O **Herdux** trata operações destrutivas com cuidado:
|
|
116
|
+
|
|
117
|
+
- **Nunca dropa um banco** sem confirmação explícita
|
|
118
|
+
- **Aborta toda a operação** se um backup de segurança falhar durante o `herdux clean`
|
|
119
|
+
- **Valida códigos de saída do `pg_dump`** antes de considerar um backup bem-sucedido
|
|
120
|
+
- **Requer a flag `--drop`** intencionalmente — dropar nunca é o padrão
|
|
121
|
+
- **`--yes` deve ser combinado com `--drop`** — não é possível pular confirmação sozinho
|
|
122
|
+
|
|
123
|
+
> Se você solicitar um backup antes de dropar e esse backup falhar, o **Herdux** para imediatamente. Nenhum dado é perdido.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 🧩 Requisitos
|
|
128
|
+
|
|
129
|
+
- **Node.js** 18 ou superior
|
|
130
|
+
- **Ferramentas cliente PostgreSQL** (`psql`, `pg_dump`, `pg_restore`) instaladas e disponíveis no `PATH`
|
|
131
|
+
|
|
132
|
+
> [!TIP]
|
|
133
|
+
> Execute `herdux doctor` após a instalação para verificar se tudo está configurado corretamente.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## 📦 Instalação
|
|
138
|
+
|
|
139
|
+
**npm (recomendado):**
|
|
140
|
+
|
|
141
|
+
> **⚠️ IMPORTANTE:** Você precisa usar a flag `-g` (global) para que a CLI fique disponível no seu terminal.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm install -g herdux-cli
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Pelo código-fonte:**
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
git clone https://github.com/herdux/herdux-cli.git
|
|
151
|
+
cd herdux-cli
|
|
152
|
+
npm install
|
|
153
|
+
npm run build
|
|
154
|
+
npm link
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 🛠️ Comandos
|
|
160
|
+
|
|
161
|
+
### `herdux version`
|
|
162
|
+
|
|
163
|
+
Mostra a versão da CLI e a versão do servidor PostgreSQL conectado.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
herdux version
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### `herdux doctor`
|
|
170
|
+
|
|
171
|
+
Executa uma verificação completa de saúde do sistema:
|
|
172
|
+
|
|
173
|
+
- Verifica se `psql`, `pg_dump` e `pg_restore` estão instalados e acessíveis
|
|
174
|
+
- Tenta uma conexão real usando a configuração resolvida
|
|
175
|
+
- Testa autenticação contra o servidor alvo
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
herdux doctor
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### 📋 `herdux list`
|
|
184
|
+
|
|
185
|
+
Lista todos os bancos de dados no servidor conectado.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
herdux list # Listagem rápida (nome, owner, encoding)
|
|
189
|
+
herdux ls --size # Inclui tamanho em disco, ordenado do maior → menor
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
> [!NOTE]
|
|
193
|
+
> A flag `--size` calcula o uso físico de disco via `pg_database_size()`. Em servidores com dezenas de bancos multi-GB, isso pode levar alguns minutos dependendo da velocidade do disco.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### `herdux create <nome>`
|
|
198
|
+
|
|
199
|
+
Cria um novo banco de dados.
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
herdux create meu_novo_db
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### `herdux drop <nome>`
|
|
206
|
+
|
|
207
|
+
Remove um banco de dados com confirmação interativa.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
herdux drop meu_banco_antigo
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### 🧹 `herdux clean` — Limpeza em Massa
|
|
216
|
+
|
|
217
|
+
Trabalhando com bancos de desenvolvimento cheios de seeds? Precisa recuperar espaço em disco rápido?
|
|
218
|
+
|
|
219
|
+
`herdux clean` permite:
|
|
220
|
+
|
|
221
|
+
- **Multi-seleção** de bancos a partir de uma interface interativa com checkboxes
|
|
222
|
+
- **Gerar backups de segurança opcionais** antes de qualquer ação destrutiva
|
|
223
|
+
- **Batch-drop** de todos os bancos selecionados com segurança
|
|
224
|
+
- **Abortar imediatamente** se qualquer backup falhar, prevenindo perda de dados
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
herdux clean
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Projetado para o workflow real do desenvolvedor: clonar bancos, experimentar, depois limpar tudo de uma vez.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### 📦 `herdux backup <banco>`
|
|
235
|
+
|
|
236
|
+
Gera um backup com timestamp em `./backups/`.
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
herdux backup mydb # Formato custom (.dump)
|
|
240
|
+
herdux backup mydb --format plain # SQL puro (.sql)
|
|
241
|
+
herdux backup mydb --drop # Backup, depois pergunta se quer dropar
|
|
242
|
+
herdux backup mydb --drop --yes # Backup + drop, sem perguntas
|
|
243
|
+
herdux backup mydb -o ./meus-backups # Diretório de saída personalizado
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
| Opção | Descrição |
|
|
247
|
+
| --------------------- | ---------------------------------------------------------- |
|
|
248
|
+
| `-F, --format <tipo>` | `custom` (padrão, comprimido) ou `plain` (SQL puro) |
|
|
249
|
+
| `-d, --drop` | Pergunta se deseja dropar o banco após backup bem-sucedido |
|
|
250
|
+
| `-y, --yes` | Pula confirmação do drop (requer `--drop`) |
|
|
251
|
+
| `-o, --output <dir>` | Diretório de saída (padrão: `./backups`) |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### 📥 `herdux restore <arquivo>`
|
|
256
|
+
|
|
257
|
+
Restaura um banco de dados a partir de um arquivo de backup. Detecta automaticamente o formato:
|
|
258
|
+
|
|
259
|
+
- `.sql` → usa `psql -f`
|
|
260
|
+
- `.dump` ou qualquer outra extensão → usa `pg_restore`
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
herdux restore ./backups/mydb_2026-02-23.dump --db mydb
|
|
264
|
+
herdux restore ./exports/data.sql --db mydb
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Precisa sobrescrever a auto-detecção? Use `--format`:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
herdux restore arquivo.bkp --db mydb --format custom
|
|
271
|
+
herdux restore script.txt --db mydb --format plain
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## ⚙️ Configuração & Perfis de Servidor
|
|
277
|
+
|
|
278
|
+
O `herdux` armazena configurações localmente em `~/.herdux/config.json`.
|
|
279
|
+
|
|
280
|
+
### Definir Padrões Globais
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
herdux config set user postgres
|
|
284
|
+
herdux config set password minha_senha
|
|
285
|
+
herdux config set port 5432
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Perfis de Servidor Nomeados
|
|
289
|
+
|
|
290
|
+
Gerencie múltiplas instâncias de banco de dados sem esforço:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
herdux config add pg16 --port 5416
|
|
294
|
+
herdux config add pg17 --port 5417 --user admin
|
|
295
|
+
herdux config add staging --host 192.168.0.10 --port 5432
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Depois conecte usando a flag `-s`:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
herdux list -s pg16
|
|
302
|
+
herdux backup mydb -s staging
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Visualizar & Gerenciar Config
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
herdux config list # Mostra todas as configurações e perfis salvos
|
|
309
|
+
herdux config get port # Obtém um valor específico
|
|
310
|
+
herdux config rm pg16 # Remove um perfil de servidor
|
|
311
|
+
herdux config reset # Limpa toda a configuração
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## 🔌 Prioridade de Conexão
|
|
317
|
+
|
|
318
|
+
Ao resolver como se conectar, o **Herdux** segue uma ordem de prioridade estrita e previsível:
|
|
319
|
+
|
|
320
|
+
| Prioridade | Fonte | Exemplo |
|
|
321
|
+
| ---------- | ---------------------- | ------------------------------------------------------- |
|
|
322
|
+
| 1️⃣ | **Flags CLI** | `herdux list --port 5417` |
|
|
323
|
+
| 2️⃣ | **Perfil de servidor** | `herdux list -s pg16` |
|
|
324
|
+
| 3️⃣ | **Padrões salvos** | `herdux config set port 5432` |
|
|
325
|
+
| 4️⃣ | **Auto-descoberta** | Escaneia portas comuns; pergunta se encontrar múltiplas |
|
|
326
|
+
|
|
327
|
+
Isso significa que a entrada explícita sempre vence. Sem surpresas.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 🤔 Por que não pgAdmin?
|
|
332
|
+
|
|
333
|
+
O **Herdux** não é um substituto de GUI.
|
|
334
|
+
É um acelerador de workflow para desenvolvedores que vivem no terminal.
|
|
335
|
+
|
|
336
|
+
Sem GUI. Sem overhead. Só velocidade.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 🧠 Princípios de Design
|
|
341
|
+
|
|
342
|
+
- Sem padrões ocultos (hidden defaults).
|
|
343
|
+
- Sem mágicas destrutivas.
|
|
344
|
+
- Resolução de conexão determinística.
|
|
345
|
+
- Comandos explícitos e combináveis.
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## 🐳 Suporte Docker (Em Breve)
|
|
350
|
+
|
|
351
|
+
O **Herdux** poderá detectar e interagir com instâncias PostgreSQL rodando dentro de containers Docker — listando, conectando e gerenciando-as tão naturalmente quanto instâncias locais.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## 🗺 Roadmap
|
|
356
|
+
|
|
357
|
+
Consulte o [ROADMAP.md](./ROADMAP.md) para ver nossos planos futuros detalhados, incluindo integração com Docker e backups criptografados.
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## 🤝 Contribuindo
|
|
362
|
+
|
|
363
|
+
PRs são bem-vindas! Por favor, abra uma issue primeiro para discutir mudanças significativas.
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
git clone https://github.com/herdux/herdux-cli.git
|
|
367
|
+
cd herdux-cli
|
|
368
|
+
npm install
|
|
369
|
+
npm run dev
|
|
370
|
+
|
|
371
|
+
# Executar testes unitários
|
|
372
|
+
npm run test:unit
|
|
373
|
+
# Executar testes de integração (requer Docker para E2E)
|
|
374
|
+
npm run test:e2e
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## ☕ Apoie o Projeto
|
|
380
|
+
|
|
381
|
+
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.
|
|
382
|
+
|
|
383
|
+
<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>
|
|
384
|
+
<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>
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 📄 Licença
|
|
389
|
+
|
|
390
|
+
MIT
|