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.
- package/README.md +116 -241
- package/README.pt-BR.md +120 -215
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +12 -1
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +12 -2
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +19 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +13 -2
- 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 +8 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +14 -2
- 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 +11 -2
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +10 -1
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +32 -17
- package/dist/commands/version.js.map +1 -1
- package/dist/core/interfaces/database-engine.interface.d.ts +1 -1
- package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -1
- package/dist/index.js +31 -2
- 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/engine-factory.d.ts.map +1 -1
- package/dist/infra/engines/engine-factory.js +3 -0
- package/dist/infra/engines/engine-factory.js.map +1 -1
- 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/dist/infra/engines/resolve-connection.d.ts.map +1 -1
- package/dist/infra/engines/resolve-connection.js +78 -55
- package/dist/infra/engines/resolve-connection.js.map +1 -1
- package/dist/infra/engines/sqlite/sqlite-env.d.ts +2 -0
- package/dist/infra/engines/sqlite/sqlite-env.d.ts.map +1 -0
- package/dist/infra/engines/sqlite/sqlite-env.js +24 -0
- package/dist/infra/engines/sqlite/sqlite-env.js.map +1 -0
- package/dist/infra/engines/sqlite/sqlite.engine.d.ts +21 -0
- package/dist/infra/engines/sqlite/sqlite.engine.d.ts.map +1 -0
- package/dist/infra/engines/sqlite/sqlite.engine.js +207 -0
- package/dist/infra/engines/sqlite/sqlite.engine.js.map +1 -0
- package/package.json +4 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import chalk from "chalk";
|
|
3
4
|
import { registerVersionCommand } from "./commands/version.js";
|
|
4
5
|
import { registerListCommand } from "./commands/list.js";
|
|
5
6
|
import { registerCreateCommand } from "./commands/create.js";
|
|
@@ -9,6 +10,8 @@ import { registerRestoreCommand } from "./commands/restore.js";
|
|
|
9
10
|
import { registerConfigCommand } from "./commands/config.js";
|
|
10
11
|
import { registerCleanCommand } from "./commands/clean.js";
|
|
11
12
|
import { registerDoctorCommand } from "./commands/doctor.js";
|
|
13
|
+
import { registerInspectCommand } from "./commands/inspect.js";
|
|
14
|
+
import { registerDockerCommand } from "./commands/docker.js";
|
|
12
15
|
import { join, dirname } from "path";
|
|
13
16
|
import { fileURLToPath } from "url";
|
|
14
17
|
import { readFileSync } from "fs";
|
|
@@ -19,14 +22,38 @@ const program = new Command();
|
|
|
19
22
|
program
|
|
20
23
|
.name("herdux")
|
|
21
24
|
.helpCommand(false)
|
|
22
|
-
.description("A modern CLI
|
|
25
|
+
.description("A modern CLI for PostgreSQL and MySQL database management")
|
|
23
26
|
.version(pkg.version)
|
|
24
27
|
.option("-H, --host <host>", "Database host")
|
|
25
28
|
.option("-p, --port <port>", "Database port (auto-detected if omitted)")
|
|
26
29
|
.option("-U, --user <user>", "Database user")
|
|
27
30
|
.option("-W, --password <password>", "Database password")
|
|
28
31
|
.option("-s, --server <name>", "Use a named server profile from config")
|
|
29
|
-
.option("-e, --engine <type>", "Database engine (postgres, mysql)")
|
|
32
|
+
.option("-e, --engine <type>", "Database engine (postgres, mysql)")
|
|
33
|
+
.addHelpText("after", `
|
|
34
|
+
Examples:
|
|
35
|
+
hdx list
|
|
36
|
+
hdx backup mydb --output /tmp/backups
|
|
37
|
+
hdx restore backup.dump --db mydb
|
|
38
|
+
hdx --engine mysql list
|
|
39
|
+
hdx --host 192.168.1.1 --user admin backup mydb
|
|
40
|
+
|
|
41
|
+
Run 'hdx <command> --help' for command-specific examples and options.`);
|
|
42
|
+
program.hook("preAction", () => {
|
|
43
|
+
const opts = program.opts();
|
|
44
|
+
if (opts.port !== undefined) {
|
|
45
|
+
const portNum = Number(opts.port);
|
|
46
|
+
if (!Number.isInteger(portNum) || portNum < 1 || portNum > 65535) {
|
|
47
|
+
console.error(chalk.red(`\n✖ Invalid port "${opts.port}". Must be a number between 1 and 65535.\n`));
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const validEngines = ["postgres", "mysql", "sqlite"];
|
|
52
|
+
if (opts.engine !== undefined && !validEngines.includes(opts.engine)) {
|
|
53
|
+
console.error(chalk.red(`\n✖ Unknown engine "${opts.engine}". Valid engines: ${validEngines.join(", ")}.\n`));
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
30
57
|
registerVersionCommand(program);
|
|
31
58
|
registerListCommand(program);
|
|
32
59
|
registerCreateCommand(program);
|
|
@@ -36,5 +63,7 @@ registerRestoreCommand(program);
|
|
|
36
63
|
registerConfigCommand(program);
|
|
37
64
|
registerCleanCommand(program);
|
|
38
65
|
registerDoctorCommand(program);
|
|
66
|
+
registerInspectCommand(program);
|
|
67
|
+
registerDockerCommand(program);
|
|
39
68
|
program.parse();
|
|
40
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":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,KAAK,CAAC;KAClB,WAAW,CAAC,
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,oDAAoD,CAAC;AAE5D,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,eAAe,CAU/D"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { PostgresEngine } from "./postgres/postgres.engine.js";
|
|
2
2
|
import { MysqlEngine } from "./mysql/mysql.engine.js";
|
|
3
|
+
import { SqliteEngine } from "./sqlite/sqlite.engine.js";
|
|
3
4
|
export function createEngine(type) {
|
|
4
5
|
switch (type) {
|
|
5
6
|
case "mysql":
|
|
6
7
|
return new MysqlEngine();
|
|
8
|
+
case "sqlite":
|
|
9
|
+
return new SqliteEngine();
|
|
7
10
|
case "postgres":
|
|
8
11
|
default:
|
|
9
12
|
return new PostgresEngine();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B,KAAK,UAAU,CAAC;QAChB;YACE,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.engine.d.ts","sourceRoot":"","sources":["../../../../src/infra/engines/mysql/mysql.engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACZ,MAAM,uDAAuD,CAAC;AA0C/D,qBAAa,WAAY,YAAW,eAAe;IACjD,eAAe,IAAI,WAAW,EAAE;IAuFhC,aAAa,IAAI,MAAM;IAIvB,2BAA2B,IAAI,iBAAiB;IAI1C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,iBAAiB,CACrB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA4CxB,gBAAgB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBtE,aAAa,CACjB,IAAI,GAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GACvD,OAAO,CAAC,YAAY,EAAE,CAAC;IAgDpB,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAyBV,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAyBV,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAoB,EAC/B,IAAI,GAAE,iBAAsB,EAC5B,
|
|
1
|
+
{"version":3,"file":"mysql.engine.d.ts","sourceRoot":"","sources":["../../../../src/infra/engines/mysql/mysql.engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACZ,MAAM,uDAAuD,CAAC;AA0C/D,qBAAa,WAAY,YAAW,eAAe;IACjD,eAAe,IAAI,WAAW,EAAE;IAuFhC,aAAa,IAAI,MAAM;IAIvB,2BAA2B,IAAI,iBAAiB;IAI1C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,iBAAiB,CACrB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA4CxB,gBAAgB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBtE,aAAa,CACjB,IAAI,GAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GACvD,OAAO,CAAC,YAAY,EAAE,CAAC;IAgDpB,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAyBV,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAyBV,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAoB,EAC/B,IAAI,GAAE,iBAAsB,EAC5B,MAAM,GAAE,MAAgB,GACvB,OAAO,CAAC,MAAM,CAAC;IAmCZ,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,iBAAsB,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CA0B/D"}
|
|
@@ -263,7 +263,10 @@ export class MysqlEngine {
|
|
|
263
263
|
throw new Error(`Failed to drop database "${name}": ${errMsg}`);
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
|
-
async backupDatabase(dbName, outputDir = "./backups", opts = {},
|
|
266
|
+
async backupDatabase(dbName, outputDir = "./backups", opts = {}, format = "plain") {
|
|
267
|
+
if (format && format !== "plain") {
|
|
268
|
+
throw new Error(`MySQL does not support "${format}" format. Only "plain" (SQL) is available.\n Remove --format or use: --format plain`);
|
|
269
|
+
}
|
|
267
270
|
const resolvedDir = resolve(outputDir);
|
|
268
271
|
if (!existsSync(resolvedDir)) {
|
|
269
272
|
mkdirSync(resolvedDir, { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql.engine.js","sourceRoot":"","sources":["../../../../src/infra/engines/mysql/mysql.engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mysql.engine.js","sourceRoot":"","sources":["../../../../src/infra/engines/mysql/mysql.engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-connection.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,eAAe,EAChB,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-connection.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,eAAe,EAChB,MAAM,oDAAoD,CAAC;AAO5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAyFD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,kBAAkB,CAAC,CA0J7B"}
|
|
@@ -4,6 +4,66 @@ import prompts from "prompts";
|
|
|
4
4
|
import { createEngine } from "./engine-factory.js";
|
|
5
5
|
import * as config from "../config/config.service.js";
|
|
6
6
|
import { logger } from "../../presentation/logger.js";
|
|
7
|
+
/**
|
|
8
|
+
* Presents an interactive prompt for the user to select a server profile.
|
|
9
|
+
* Returns the selected server name, or undefined if the user selected
|
|
10
|
+
* the default connection or no options were available.
|
|
11
|
+
*/
|
|
12
|
+
async function promptServerSelection(servers, serverNames, savedDefaults, requestedEngine) {
|
|
13
|
+
const dEngine = savedDefaults.engine ?? "postgres";
|
|
14
|
+
const isDefaultCompatible = !requestedEngine || dEngine === requestedEngine;
|
|
15
|
+
const hasDefaults = Object.keys(savedDefaults).length > 0;
|
|
16
|
+
if (serverNames.length === 0 && !(hasDefaults && isDefaultCompatible)) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const choices = serverNames.map((name) => {
|
|
20
|
+
const srv = servers[name];
|
|
21
|
+
const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
|
|
22
|
+
return {
|
|
23
|
+
title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
|
|
24
|
+
value: name,
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
if (hasDefaults && isDefaultCompatible) {
|
|
28
|
+
const defaultEngineLabel = `, engine: ${dEngine}`;
|
|
29
|
+
choices.unshift({
|
|
30
|
+
title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
|
|
31
|
+
value: "__default__",
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (choices.length === 0) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
if (choices.length === 1) {
|
|
38
|
+
const choice = choices[0];
|
|
39
|
+
console.log(chalk.green(`✔ Auto-selected connection: › ${choice.title}`));
|
|
40
|
+
return choice.value !== "__default__" ? choice.value : undefined;
|
|
41
|
+
}
|
|
42
|
+
const response = await prompts({
|
|
43
|
+
type: "select",
|
|
44
|
+
name: "server",
|
|
45
|
+
message: "Select a connection to use:",
|
|
46
|
+
choices,
|
|
47
|
+
});
|
|
48
|
+
if (!response.server) {
|
|
49
|
+
console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
return response.server !== "__default__" ? response.server : undefined;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Determines the engine type from the CLI flag, server profile, or config defaults.
|
|
56
|
+
* Priority: CLI flag > server profile engine > config default engine > "postgres"
|
|
57
|
+
*/
|
|
58
|
+
function resolveEngineType(rawEngine, serverName, savedDefaults) {
|
|
59
|
+
if (rawEngine)
|
|
60
|
+
return rawEngine;
|
|
61
|
+
if (serverName) {
|
|
62
|
+
const profile = config.getServer(serverName);
|
|
63
|
+
return profile?.engine ?? savedDefaults.engine ?? "postgres";
|
|
64
|
+
}
|
|
65
|
+
return savedDefaults.engine ?? "postgres";
|
|
66
|
+
}
|
|
7
67
|
// --- Main Resolver ---
|
|
8
68
|
/**
|
|
9
69
|
* Resolves both the database engine and connection options together.
|
|
@@ -23,7 +83,6 @@ import { logger } from "../../presentation/logger.js";
|
|
|
23
83
|
export async function resolveEngineAndConnection(rawOpts) {
|
|
24
84
|
const savedDefaults = config.getDefault();
|
|
25
85
|
let serverName = rawOpts.server;
|
|
26
|
-
let profileEngine;
|
|
27
86
|
// --- Step 1: Resolve server profile (may provide engine) ---
|
|
28
87
|
const isInteractive = process.stdout.isTTY || process.env.HERDUX_TEST_FORCE_TTY === "1";
|
|
29
88
|
if (!serverName && !rawOpts.port && !rawOpts.host && isInteractive) {
|
|
@@ -32,63 +91,13 @@ export async function resolveEngineAndConnection(rawOpts) {
|
|
|
32
91
|
if (rawOpts.engine) {
|
|
33
92
|
serverNames = serverNames.filter((name) => servers[name].engine === rawOpts.engine);
|
|
34
93
|
}
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (serverNames.length > 0 || (hasDefaults && isDefaultCompatible)) {
|
|
39
|
-
const choices = serverNames.map((name) => {
|
|
40
|
-
const srv = servers[name];
|
|
41
|
-
const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
|
|
42
|
-
return {
|
|
43
|
-
title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
|
|
44
|
-
value: name,
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
if (hasDefaults && isDefaultCompatible) {
|
|
48
|
-
const defaultEngineLabel = `, engine: ${dEngine}`;
|
|
49
|
-
choices.unshift({
|
|
50
|
-
title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
|
|
51
|
-
value: "__default__",
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
if (choices.length === 1) {
|
|
55
|
-
const choice = choices[0];
|
|
56
|
-
console.log(chalk.green(`✔ Auto-selected connection: › ${choice.title}`));
|
|
57
|
-
if (choice.value !== "__default__") {
|
|
58
|
-
serverName = choice.value;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
const response = await prompts({
|
|
63
|
-
type: "select",
|
|
64
|
-
name: "server",
|
|
65
|
-
message: "Select a connection to use:",
|
|
66
|
-
choices,
|
|
67
|
-
});
|
|
68
|
-
if (!response.server) {
|
|
69
|
-
console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
|
|
70
|
-
process.exit(0);
|
|
71
|
-
}
|
|
72
|
-
if (response.server !== "__default__") {
|
|
73
|
-
serverName = response.server;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
94
|
+
const selected = await promptServerSelection(servers, serverNames, savedDefaults, rawOpts.engine);
|
|
95
|
+
if (selected !== undefined) {
|
|
96
|
+
serverName = selected;
|
|
76
97
|
}
|
|
77
98
|
}
|
|
78
99
|
// --- Step 2: Determine engine type ---
|
|
79
|
-
|
|
80
|
-
let engineType;
|
|
81
|
-
if (rawOpts.engine) {
|
|
82
|
-
engineType = rawOpts.engine;
|
|
83
|
-
}
|
|
84
|
-
else if (serverName) {
|
|
85
|
-
const profile = config.getServer(serverName);
|
|
86
|
-
profileEngine = profile?.engine;
|
|
87
|
-
engineType = profileEngine ?? savedDefaults.engine ?? "postgres";
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
engineType = savedDefaults.engine ?? "postgres";
|
|
91
|
-
}
|
|
100
|
+
const engineType = resolveEngineType(rawOpts.engine, serverName, savedDefaults);
|
|
92
101
|
const engine = createEngine(engineType);
|
|
93
102
|
// --- Step 3: Resolve connection options ---
|
|
94
103
|
if (serverName) {
|
|
@@ -122,6 +131,7 @@ export async function resolveEngineAndConnection(rawOpts) {
|
|
|
122
131
|
};
|
|
123
132
|
}
|
|
124
133
|
// No server profile — merge CLI opts with config defaults
|
|
134
|
+
const engineDefaults = engine.getDefaultConnectionOptions();
|
|
125
135
|
const merged = {
|
|
126
136
|
host: rawOpts.host ?? savedDefaults.host,
|
|
127
137
|
port: rawOpts.port ?? savedDefaults.port,
|
|
@@ -131,6 +141,19 @@ export async function resolveEngineAndConnection(rawOpts) {
|
|
|
131
141
|
if (merged.port) {
|
|
132
142
|
return { engine, engineType, opts: merged };
|
|
133
143
|
}
|
|
144
|
+
// Engines that don't use ports (e.g. SQLite) skip port-based auto-discovery.
|
|
145
|
+
// They are fully identified by their host (database directory) alone.
|
|
146
|
+
if (!engineDefaults.port) {
|
|
147
|
+
return {
|
|
148
|
+
engine,
|
|
149
|
+
engineType,
|
|
150
|
+
opts: {
|
|
151
|
+
host: merged.host ?? engineDefaults.host,
|
|
152
|
+
user: merged.user ?? engineDefaults.user,
|
|
153
|
+
password: merged.password,
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
134
157
|
// --- Step 4: Auto-discovery ---
|
|
135
158
|
const spinner = ora(`Scanning for running ${engine.getEngineName()} servers...`).start();
|
|
136
159
|
const instances = await engine.discoverInstances(merged);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-env.d.ts","sourceRoot":"","sources":["../../../../src/infra/engines/sqlite/sqlite-env.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuBzD"}
|