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.
- package/README.md +114 -246
- package/README.pt-BR.md +118 -220
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +3 -1
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +3 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/docker.d.ts +3 -0
- package/dist/commands/docker.d.ts.map +1 -0
- package/dist/commands/docker.js +106 -0
- package/dist/commands/docker.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +3 -1
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/inspect.d.ts +3 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +29 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +26 -16
- package/dist/commands/version.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/docker/docker.service.d.ts +14 -0
- package/dist/infra/docker/docker.service.d.ts.map +1 -0
- package/dist/infra/docker/docker.service.js +83 -0
- package/dist/infra/docker/docker.service.js.map +1 -0
- package/dist/infra/engines/inspect-backup.d.ts +13 -0
- package/dist/infra/engines/inspect-backup.d.ts.map +1 -0
- package/dist/infra/engines/inspect-backup.js +97 -0
- package/dist/infra/engines/inspect-backup.js.map +1 -0
- package/dist/infra/engines/mysql/mysql.engine.d.ts +1 -1
- package/dist/infra/engines/mysql/mysql.engine.d.ts.map +1 -1
- package/dist/infra/engines/mysql/mysql.engine.js +4 -1
- package/dist/infra/engines/mysql/mysql.engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import { isDockerAvailable, listDatabaseContainers, startContainer, stopContainer, } from "../infra/docker/docker.service.js";
|
|
4
|
+
async function assertDockerAvailable() {
|
|
5
|
+
const available = await isDockerAvailable();
|
|
6
|
+
if (!available) {
|
|
7
|
+
console.error(chalk.red("\n✖ Docker is not available. Make sure Docker is installed and the daemon is running.\n"));
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function registerDockerCommand(program) {
|
|
12
|
+
const dockerCmd = program
|
|
13
|
+
.command("docker")
|
|
14
|
+
.helpCommand(false)
|
|
15
|
+
.description("Manage database containers (postgres, mysql, mariadb)")
|
|
16
|
+
.addHelpText("after", `
|
|
17
|
+
Examples:
|
|
18
|
+
hdx docker list
|
|
19
|
+
hdx docker list --all
|
|
20
|
+
hdx docker start pg-dev
|
|
21
|
+
hdx docker stop pg-dev
|
|
22
|
+
hdx docker stop pg-dev --remove`);
|
|
23
|
+
dockerCmd
|
|
24
|
+
.command("list")
|
|
25
|
+
.alias("ls")
|
|
26
|
+
.description("List running database containers")
|
|
27
|
+
.option("-a, --all", "Include stopped containers")
|
|
28
|
+
.action(async (opts) => {
|
|
29
|
+
try {
|
|
30
|
+
await assertDockerAvailable();
|
|
31
|
+
const spinner = ora("Fetching database containers...").start();
|
|
32
|
+
const containers = await listDatabaseContainers(opts.all);
|
|
33
|
+
if (containers.length === 0) {
|
|
34
|
+
spinner.warn(opts.all
|
|
35
|
+
? "No database containers found"
|
|
36
|
+
: "No running database containers found");
|
|
37
|
+
console.log(chalk.gray(" Only postgres, mysql, and mariadb images are listed.\n"));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const label = opts.all ? "container(s) found" : "running container(s)";
|
|
41
|
+
spinner.succeed(`Found ${containers.length} ${label}\n`);
|
|
42
|
+
const nameWidth = Math.max(16, ...containers.map((c) => c.name.length)) + 2;
|
|
43
|
+
const engineWidth = 12;
|
|
44
|
+
const portWidth = 8;
|
|
45
|
+
const header = ` ${"NAME".padEnd(nameWidth)}${"ENGINE".padEnd(engineWidth)}${"PORT".padEnd(portWidth)}STATUS`;
|
|
46
|
+
console.log(chalk.bold(header));
|
|
47
|
+
console.log(chalk.gray(` ${"─".repeat(nameWidth + engineWidth + portWidth + 12)}`));
|
|
48
|
+
for (const c of containers) {
|
|
49
|
+
const portDisplay = c.hostPort
|
|
50
|
+
? chalk.cyan(c.hostPort.padEnd(portWidth))
|
|
51
|
+
: chalk.gray("─".padEnd(portWidth));
|
|
52
|
+
const isRunning = c.status.toLowerCase().startsWith("up");
|
|
53
|
+
const statusDisplay = isRunning
|
|
54
|
+
? chalk.green(c.status)
|
|
55
|
+
: chalk.gray(c.status);
|
|
56
|
+
console.log(` ${chalk.cyan(c.name.padEnd(nameWidth))}${c.engineType.padEnd(engineWidth)}${portDisplay}${statusDisplay}`);
|
|
57
|
+
}
|
|
58
|
+
console.log();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
62
|
+
console.error(chalk.red(`\n✖ ${message}\n`));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
dockerCmd
|
|
67
|
+
.command("start <name>")
|
|
68
|
+
.description("Start a stopped database container")
|
|
69
|
+
.action(async (name) => {
|
|
70
|
+
try {
|
|
71
|
+
await assertDockerAvailable();
|
|
72
|
+
const spinner = ora(`Starting container "${name}"...`).start();
|
|
73
|
+
await startContainer(name);
|
|
74
|
+
spinner.succeed(`Container "${name}" started\n`);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
78
|
+
console.error(chalk.red(`\n✖ ${message}\n`));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
dockerCmd
|
|
83
|
+
.command("stop <name>")
|
|
84
|
+
.description("Stop a running database container")
|
|
85
|
+
.option("-r, --remove", "Remove the container after stopping")
|
|
86
|
+
.action(async (name, opts) => {
|
|
87
|
+
try {
|
|
88
|
+
await assertDockerAvailable();
|
|
89
|
+
const action = opts.remove
|
|
90
|
+
? `Stopping and removing container "${name}"...`
|
|
91
|
+
: `Stopping container "${name}"...`;
|
|
92
|
+
const spinner = ora(action).start();
|
|
93
|
+
await stopContainer(name, opts.remove);
|
|
94
|
+
const done = opts.remove
|
|
95
|
+
? `Container "${name}" stopped and removed\n`
|
|
96
|
+
: `Container "${name}" stopped\n`;
|
|
97
|
+
spinner.succeed(done);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
101
|
+
console.error(chalk.red(`\n✖ ${message}\n`));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/commands/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyD5D"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import ora from "ora";
|
|
3
3
|
import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.js";
|
|
4
|
+
import { logger } from "../presentation/logger.js";
|
|
4
5
|
export function registerDoctorCommand(program) {
|
|
5
6
|
program
|
|
6
7
|
.command("doctor")
|
|
@@ -11,7 +12,7 @@ Examples:
|
|
|
11
12
|
hdx doctor --engine postgres
|
|
12
13
|
hdx doctor --engine mysql`)
|
|
13
14
|
.action(async () => {
|
|
14
|
-
|
|
15
|
+
logger.title("Herdux Doctor: System Health Check");
|
|
15
16
|
const rawOpts = program.opts();
|
|
16
17
|
const { engine, opts } = await resolveEngineAndConnection(rawOpts);
|
|
17
18
|
const checks = engine.getHealthChecks();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,iEAAiE,CAClE;SACA,WAAW,CACV,OAAO,EACP;;;;4BAIsB,CACvB;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,yDAAyD,CAC1D,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iEAAiE,CAClE,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D1D"}
|
package/dist/commands/drop.js
CHANGED
|
@@ -34,9 +34,11 @@ Examples:
|
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
const host = opts.host ?? "localhost";
|
|
38
|
+
const connLabel = opts.port ? `${host}:${opts.port}` : host;
|
|
37
39
|
const spinner = ora(`Dropping database "${name}"...`).start();
|
|
38
40
|
await engine.dropDatabase(name, opts);
|
|
39
|
-
spinner.succeed(`Database "${name}" dropped
|
|
41
|
+
spinner.succeed(`Database "${name}" dropped (${engine.getEngineName()} at ${connLabel})\n`);
|
|
40
42
|
}
|
|
41
43
|
catch (err) {
|
|
42
44
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/commands/drop.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;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;;;gDAK0C,CAC3C;SACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA0B,EAAE,EAAE;QACzD,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,8BAA8B,IAAI,uEAAuE,CAC1G,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,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,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC7B,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2CAA2C,IAAI,iCAAiC;oBACzF,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/commands/drop.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;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;;;gDAK0C,CAC3C;SACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA0B,EAAE,EAAE;QACzD,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,8BAA8B,IAAI,uEAAuE,CAC1G,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,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,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC7B,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2CAA2C,IAAI,iCAAiC;oBACzF,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAE5D,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,CACb,aAAa,IAAI,cAAc,MAAM,CAAC,aAAa,EAAE,OAAO,SAAS,KAAK,CAC3E,CAAC;QACJ,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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6B7D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { inspectBackupFile } from "../infra/engines/inspect-backup.js";
|
|
3
|
+
export function registerInspectCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command("inspect <file>")
|
|
6
|
+
.description("Inspect the contents of a backup file without connecting to a database")
|
|
7
|
+
.addHelpText("after", `
|
|
8
|
+
Supported formats:
|
|
9
|
+
.dump PostgreSQL custom format Output: full Table of Contents (pg_restore --list)
|
|
10
|
+
.sql Plain SQL (any engine) Output: CREATE TABLE / VIEW / INDEX / SEQUENCE statements
|
|
11
|
+
.db / .sqlite SQLite database file Output: database schema (sqlite3 .schema)
|
|
12
|
+
|
|
13
|
+
Examples:
|
|
14
|
+
hdx inspect backup.dump
|
|
15
|
+
hdx inspect export.sql
|
|
16
|
+
hdx inspect mydb.db`)
|
|
17
|
+
.action(async (file) => {
|
|
18
|
+
try {
|
|
19
|
+
const output = await inspectBackupFile(file);
|
|
20
|
+
console.log(output);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
24
|
+
console.error(chalk.red(`\n✖ ${message}\n`));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CACV,wEAAwE,CACzE;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;sBASgB,CACjB;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoF1D"}
|
package/dist/commands/list.js
CHANGED
|
@@ -26,7 +26,9 @@ Examples:
|
|
|
26
26
|
...opts,
|
|
27
27
|
includeSize: options.size,
|
|
28
28
|
});
|
|
29
|
-
|
|
29
|
+
const host = opts.host ?? "localhost";
|
|
30
|
+
const connLabel = opts.port ? `${host}:${opts.port}` : host;
|
|
31
|
+
spinner.succeed(`Found ${databases.length} database(s) on ${engine.getEngineName()} (${connLabel})\n`);
|
|
30
32
|
if (databases.length === 0) {
|
|
31
33
|
console.log(chalk.yellow(" No databases found.\n"));
|
|
32
34
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;;;;2CAMqC,CACtC;SACA,MAAM,CACL,YAAY,EACZ,wEAAwE,CACzE;SACA,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,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,MAAM,OAAO,GAAG,GAAG,CACjB,OAAO,CAAC,IAAI;gBACV,CAAC,CAAC,iDAAiD;gBACnD,CAAC,CAAC,2BAA2B,CAChC,CAAC,KAAK,EAAE,CAAC;YAEV,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;gBAC3C,GAAG,IAAI;gBACP,WAAW,EAAE,OAAO,CAAC,IAAI;aAC1B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkE7D"}
|
package/dist/commands/version.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import ora from "ora";
|
|
3
3
|
import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.js";
|
|
4
|
+
import { logger } from "../presentation/logger.js";
|
|
4
5
|
export function registerVersionCommand(program) {
|
|
5
6
|
program
|
|
6
7
|
.command("version")
|
|
@@ -15,26 +16,35 @@ Examples:
|
|
|
15
16
|
const rawOpts = program.opts();
|
|
16
17
|
const { engine, opts } = await resolveEngineAndConnection(rawOpts);
|
|
17
18
|
const clientVersion = await engine.checkClientVersion();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.log(chalk.gray(" Use --port to specify a custom port.\n"));
|
|
19
|
+
logger.title(`${engine.getEngineName()} Client`);
|
|
20
|
+
logger.line(clientVersion);
|
|
21
|
+
logger.blank();
|
|
22
|
+
const isPortless = !engine.getDefaultConnectionOptions().port;
|
|
23
|
+
if (isPortless) {
|
|
24
|
+
logger.info(`${engine.getEngineName()} is file-based. No server instances to scan.`);
|
|
25
|
+
logger.blank();
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
spinner
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log(
|
|
28
|
+
const spinner = ora(`Scanning for running ${engine.getEngineName()} servers...`).start();
|
|
29
|
+
const instances = await engine.discoverInstances(opts);
|
|
30
|
+
if (instances.length === 0) {
|
|
31
|
+
spinner.warn(`No running ${engine.getEngineName()} servers found`);
|
|
32
|
+
console.log(chalk.yellow(" No servers detected on common ports."));
|
|
33
|
+
console.log(chalk.gray(" Use --port to specify a custom port.\n"));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
spinner.succeed(`Found ${instances.length} running server(s)\n`);
|
|
37
|
+
logger.title("Running Servers");
|
|
38
|
+
for (const instance of instances) {
|
|
39
|
+
const portBadge = chalk.bgGreen.black(` :${instance.port} `);
|
|
40
|
+
logger.line(`${portBadge} ${instance.version}`);
|
|
41
|
+
}
|
|
42
|
+
logger.blank();
|
|
33
43
|
}
|
|
34
|
-
console.log();
|
|
35
44
|
}
|
|
36
|
-
|
|
37
|
-
|
|
45
|
+
logger.title("Herdux CLI");
|
|
46
|
+
logger.line(`v${program.version()}`);
|
|
47
|
+
logger.blank();
|
|
38
48
|
}
|
|
39
49
|
catch (err) {
|
|
40
50
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { registerRestoreCommand } from "./commands/restore.js";
|
|
|
10
10
|
import { registerConfigCommand } from "./commands/config.js";
|
|
11
11
|
import { registerCleanCommand } from "./commands/clean.js";
|
|
12
12
|
import { registerDoctorCommand } from "./commands/doctor.js";
|
|
13
|
+
import { registerInspectCommand } from "./commands/inspect.js";
|
|
14
|
+
import { registerDockerCommand } from "./commands/docker.js";
|
|
13
15
|
import { join, dirname } from "path";
|
|
14
16
|
import { fileURLToPath } from "url";
|
|
15
17
|
import { readFileSync } from "fs";
|
|
@@ -61,5 +63,7 @@ registerRestoreCommand(program);
|
|
|
61
63
|
registerConfigCommand(program);
|
|
62
64
|
registerCleanCommand(program);
|
|
63
65
|
registerDoctorCommand(program);
|
|
66
|
+
registerInspectCommand(program);
|
|
67
|
+
registerDockerCommand(program);
|
|
64
68
|
program.parse();
|
|
65
69
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface DatabaseContainer {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
image: string;
|
|
5
|
+
hostPort: string;
|
|
6
|
+
containerPort: string;
|
|
7
|
+
status: string;
|
|
8
|
+
engineType: "postgres" | "mysql" | "unknown";
|
|
9
|
+
}
|
|
10
|
+
export declare function isDockerAvailable(): Promise<boolean>;
|
|
11
|
+
export declare function listDatabaseContainers(showAll?: boolean): Promise<DatabaseContainer[]>;
|
|
12
|
+
export declare function startContainer(name: string): Promise<void>;
|
|
13
|
+
export declare function stopContainer(name: string, remove?: boolean): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=docker.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.service.d.ts","sourceRoot":"","sources":["../../../src/infra/docker/docker.service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;CAC9C;AA4BD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS1D;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,UAAQ,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAwC9B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhE;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,UAAQ,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { runCommand } from "../command-runner.js";
|
|
2
|
+
import { binaryExists } from "../utils/detect-binary.js";
|
|
3
|
+
const IMAGE_ENGINE_MAP = {
|
|
4
|
+
postgres: { engineType: "postgres", containerPort: "5432" },
|
|
5
|
+
mysql: { engineType: "mysql", containerPort: "3306" },
|
|
6
|
+
mariadb: { engineType: "mysql", containerPort: "3306" },
|
|
7
|
+
};
|
|
8
|
+
function detectEngine(image) {
|
|
9
|
+
const lower = image.toLowerCase();
|
|
10
|
+
for (const [key, value] of Object.entries(IMAGE_ENGINE_MAP)) {
|
|
11
|
+
if (lower.includes(key))
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
return { engineType: "unknown", containerPort: "" };
|
|
15
|
+
}
|
|
16
|
+
function parseHostPort(portsStr) {
|
|
17
|
+
// Matches patterns like: 0.0.0.0:5432->5432/tcp or :::3306->3306/tcp
|
|
18
|
+
const match = portsStr.match(/:(\d+)->\d+\/tcp/);
|
|
19
|
+
return match ? match[1] : "";
|
|
20
|
+
}
|
|
21
|
+
export async function isDockerAvailable() {
|
|
22
|
+
const hasBinary = await binaryExists("docker");
|
|
23
|
+
if (!hasBinary)
|
|
24
|
+
return false;
|
|
25
|
+
const result = await runCommand("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 5_000 });
|
|
26
|
+
return result.exitCode === 0;
|
|
27
|
+
}
|
|
28
|
+
export async function listDatabaseContainers(showAll = false) {
|
|
29
|
+
const args = [
|
|
30
|
+
"ps",
|
|
31
|
+
"--format",
|
|
32
|
+
"{{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}",
|
|
33
|
+
];
|
|
34
|
+
if (showAll)
|
|
35
|
+
args.push("--all");
|
|
36
|
+
const result = await runCommand("docker", args);
|
|
37
|
+
if (result.exitCode !== 0) {
|
|
38
|
+
throw new Error(result.stderr || "docker ps failed");
|
|
39
|
+
}
|
|
40
|
+
const containers = [];
|
|
41
|
+
for (const line of result.stdout.split("\n")) {
|
|
42
|
+
if (!line.trim())
|
|
43
|
+
continue;
|
|
44
|
+
const parts = line.split("\t");
|
|
45
|
+
const id = parts[0] ?? "";
|
|
46
|
+
const name = parts[1] ?? "";
|
|
47
|
+
const image = parts[2] ?? "";
|
|
48
|
+
const ports = parts[3] ?? "";
|
|
49
|
+
const status = parts.slice(4).join("\t");
|
|
50
|
+
const { engineType, containerPort } = detectEngine(image);
|
|
51
|
+
if (engineType === "unknown")
|
|
52
|
+
continue;
|
|
53
|
+
containers.push({
|
|
54
|
+
id,
|
|
55
|
+
name,
|
|
56
|
+
image,
|
|
57
|
+
hostPort: parseHostPort(ports),
|
|
58
|
+
containerPort,
|
|
59
|
+
status,
|
|
60
|
+
engineType,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return containers;
|
|
64
|
+
}
|
|
65
|
+
export async function startContainer(name) {
|
|
66
|
+
const result = await runCommand("docker", ["start", name]);
|
|
67
|
+
if (result.exitCode !== 0) {
|
|
68
|
+
throw new Error(result.stderr || `Failed to start container "${name}"`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function stopContainer(name, remove = false) {
|
|
72
|
+
const stopResult = await runCommand("docker", ["stop", name]);
|
|
73
|
+
if (stopResult.exitCode !== 0) {
|
|
74
|
+
throw new Error(stopResult.stderr || `Failed to stop container "${name}"`);
|
|
75
|
+
}
|
|
76
|
+
if (remove) {
|
|
77
|
+
const rmResult = await runCommand("docker", ["rm", name]);
|
|
78
|
+
if (rmResult.exitCode !== 0) {
|
|
79
|
+
throw new Error(rmResult.stderr || `Failed to remove container "${name}"`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=docker.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.service.js","sourceRoot":"","sources":["../../../src/infra/docker/docker.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inspects the contents of a database backup file without a live connection.
|
|
3
|
+
*
|
|
4
|
+
* Supported formats:
|
|
5
|
+
* .dump / .tar PostgreSQL dump formats — pg_restore --list
|
|
6
|
+
* .sql Plain SQL (any engine) — extracts CREATE statements
|
|
7
|
+
* .db / .sqlite SQLite database file — sqlite3 .schema
|
|
8
|
+
*
|
|
9
|
+
* @throws if the file does not exist, the extension is unsupported, or the
|
|
10
|
+
* underlying tool returns a non-zero exit code.
|
|
11
|
+
*/
|
|
12
|
+
export declare function inspectBackupFile(filePath: string): Promise<string>;
|
|
13
|
+
//# sourceMappingURL=inspect-backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-backup.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/inspect-backup.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBzE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "fs";
|
|
2
|
+
import { resolve, extname } from "path";
|
|
3
|
+
import { execa } from "execa";
|
|
4
|
+
/**
|
|
5
|
+
* Inspects the contents of a database backup file without a live connection.
|
|
6
|
+
*
|
|
7
|
+
* Supported formats:
|
|
8
|
+
* .dump / .tar PostgreSQL dump formats — pg_restore --list
|
|
9
|
+
* .sql Plain SQL (any engine) — extracts CREATE statements
|
|
10
|
+
* .db / .sqlite SQLite database file — sqlite3 .schema
|
|
11
|
+
*
|
|
12
|
+
* @throws if the file does not exist, the extension is unsupported, or the
|
|
13
|
+
* underlying tool returns a non-zero exit code.
|
|
14
|
+
*/
|
|
15
|
+
export async function inspectBackupFile(filePath) {
|
|
16
|
+
const resolvedPath = resolve(filePath);
|
|
17
|
+
if (!existsSync(resolvedPath)) {
|
|
18
|
+
throw new Error(`File not found: ${resolvedPath}`);
|
|
19
|
+
}
|
|
20
|
+
const ext = extname(resolvedPath).toLowerCase();
|
|
21
|
+
if (ext === ".dump" || ext === ".tar") {
|
|
22
|
+
return inspectPostgresDump(resolvedPath);
|
|
23
|
+
}
|
|
24
|
+
if (ext === ".sql") {
|
|
25
|
+
return inspectSqlFile(resolvedPath);
|
|
26
|
+
}
|
|
27
|
+
if (ext === ".db" || ext === ".sqlite") {
|
|
28
|
+
return inspectSqliteFile(resolvedPath);
|
|
29
|
+
}
|
|
30
|
+
throw new Error(`Unsupported file type "${ext}". Supported extensions: .dump / .tar (PostgreSQL), .sql (any engine), .db / .sqlite (SQLite)`);
|
|
31
|
+
}
|
|
32
|
+
async function inspectPostgresDump(filePath) {
|
|
33
|
+
const result = await execa("pg_restore", ["--list", filePath], {
|
|
34
|
+
reject: false,
|
|
35
|
+
});
|
|
36
|
+
if (result.exitCode !== 0) {
|
|
37
|
+
throw new Error(`pg_restore failed: ${result.stderr || "unknown error"}\n\nMake sure pg_restore is installed and the file is a valid PostgreSQL custom dump.`);
|
|
38
|
+
}
|
|
39
|
+
return result.stdout;
|
|
40
|
+
}
|
|
41
|
+
function inspectSqlFile(filePath) {
|
|
42
|
+
const content = readFileSync(filePath, "utf-8");
|
|
43
|
+
const lines = content.split("\n");
|
|
44
|
+
const ddlPatterns = [
|
|
45
|
+
/^CREATE\s+TABLE\b/i,
|
|
46
|
+
/^CREATE\s+(UNIQUE\s+)?INDEX\b/i,
|
|
47
|
+
/^CREATE\s+(OR\s+REPLACE\s+)?VIEW\b/i,
|
|
48
|
+
/^CREATE\s+SEQUENCE\b/i,
|
|
49
|
+
/^CREATE\s+TYPE\b/i,
|
|
50
|
+
/^CREATE\s+FUNCTION\b/i,
|
|
51
|
+
/^CREATE\s+PROCEDURE\b/i,
|
|
52
|
+
/^CREATE\s+TRIGGER\b/i,
|
|
53
|
+
];
|
|
54
|
+
const statements = [];
|
|
55
|
+
let currentStatement = [];
|
|
56
|
+
let inStatement = false;
|
|
57
|
+
for (const line of lines) {
|
|
58
|
+
const trimmed = line.trim();
|
|
59
|
+
if (!inStatement && ddlPatterns.some((p) => p.test(trimmed))) {
|
|
60
|
+
inStatement = true;
|
|
61
|
+
currentStatement = [line];
|
|
62
|
+
// Handle single-line statements (e.g. CREATE INDEX ... ON ...(col);)
|
|
63
|
+
if (trimmed.endsWith(";")) {
|
|
64
|
+
statements.push(currentStatement.join("\n"));
|
|
65
|
+
currentStatement = [];
|
|
66
|
+
inStatement = false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else if (inStatement) {
|
|
70
|
+
currentStatement.push(line);
|
|
71
|
+
if (trimmed.endsWith(";")) {
|
|
72
|
+
statements.push(currentStatement.join("\n"));
|
|
73
|
+
currentStatement = [];
|
|
74
|
+
inStatement = false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Flush any unterminated statement (e.g. no trailing semicolon)
|
|
79
|
+
if (currentStatement.length > 0) {
|
|
80
|
+
statements.push(currentStatement.join("\n"));
|
|
81
|
+
}
|
|
82
|
+
if (statements.length === 0) {
|
|
83
|
+
return "(no CREATE statements found in this SQL file)";
|
|
84
|
+
}
|
|
85
|
+
return statements.join("\n\n");
|
|
86
|
+
}
|
|
87
|
+
async function inspectSqliteFile(filePath) {
|
|
88
|
+
const result = await execa("sqlite3", [filePath, ".schema"], {
|
|
89
|
+
reject: false,
|
|
90
|
+
});
|
|
91
|
+
if (result.exitCode !== 0) {
|
|
92
|
+
throw new Error(`sqlite3 failed: ${result.stderr || "unknown error"}\n\nMake sure sqlite3 is installed and the file is a valid SQLite database.`);
|
|
93
|
+
}
|
|
94
|
+
const schema = result.stdout.trim();
|
|
95
|
+
return schema || "(empty database — no tables defined)";
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=inspect-backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-backup.js","sourceRoot":"","sources":["../../../src/infra/engines/inspect-backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export declare class MysqlEngine implements IDatabaseEngine {
|
|
|
12
12
|
}): Promise<DatabaseInfo[]>;
|
|
13
13
|
createDatabase(name: string, opts?: ConnectionOptions): Promise<void>;
|
|
14
14
|
dropDatabase(name: string, opts?: ConnectionOptions): Promise<void>;
|
|
15
|
-
backupDatabase(dbName: string, outputDir?: string, opts?: ConnectionOptions,
|
|
15
|
+
backupDatabase(dbName: string, outputDir?: string, opts?: ConnectionOptions, format?: string): Promise<string>;
|
|
16
16
|
restoreDatabase(inputPath: string, dbName: string, opts?: ConnectionOptions, _format?: string, _clean?: boolean): Promise<{
|
|
17
17
|
hasWarnings: boolean;
|
|
18
18
|
warnings?: string;
|