herdux-cli 0.3.1 → 0.4.1
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 +123 -35
- package/README.pt-BR.md +91 -33
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +3 -5
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +3 -5
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +11 -5
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +3 -5
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/drop.d.ts.map +1 -1
- package/dist/commands/drop.js +3 -5
- package/dist/commands/drop.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/restore.d.ts.map +1 -1
- package/dist/commands/restore.js +3 -5
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/version.js +3 -3
- package/dist/commands/version.js.map +1 -1
- package/dist/core/interfaces/database-engine.interface.d.ts +5 -0
- package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/command-runner.d.ts +2 -0
- package/dist/infra/command-runner.d.ts.map +1 -1
- package/dist/infra/command-runner.js +1 -0
- package/dist/infra/command-runner.js.map +1 -1
- package/dist/infra/config/config.service.d.ts +8 -5
- package/dist/infra/config/config.service.d.ts.map +1 -1
- package/dist/infra/config/config.service.js.map +1 -1
- package/dist/infra/engines/engine-factory.d.ts +3 -0
- package/dist/infra/engines/engine-factory.d.ts.map +1 -0
- package/dist/infra/engines/engine-factory.js +12 -0
- package/dist/infra/engines/engine-factory.js.map +1 -0
- package/dist/infra/engines/mysql/mysql-env.d.ts +11 -0
- package/dist/infra/engines/mysql/mysql-env.d.ts.map +1 -0
- package/dist/infra/engines/mysql/mysql-env.js +30 -0
- package/dist/infra/engines/mysql/mysql-env.js.map +1 -0
- package/dist/infra/engines/mysql/mysql.engine.d.ts +21 -0
- package/dist/infra/engines/mysql/mysql.engine.d.ts.map +1 -0
- package/dist/infra/engines/mysql/mysql.engine.js +311 -0
- package/dist/infra/engines/mysql/mysql.engine.js.map +1 -0
- package/dist/infra/engines/postgres/postgres.engine.d.ts +1 -0
- package/dist/infra/engines/postgres/postgres.engine.d.ts.map +1 -1
- package/dist/infra/engines/postgres/postgres.engine.js +3 -0
- package/dist/infra/engines/postgres/postgres.engine.js.map +1 -1
- package/dist/infra/engines/resolve-connection.d.ts +26 -0
- package/dist/infra/engines/resolve-connection.d.ts.map +1 -0
- package/dist/infra/engines/resolve-connection.js +169 -0
- package/dist/infra/engines/resolve-connection.js.map +1 -0
- package/package.json +14 -4
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import ora from "ora";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import prompts from "prompts";
|
|
4
|
+
import { createEngine } from "./engine-factory.js";
|
|
5
|
+
import * as config from "../config/config.service.js";
|
|
6
|
+
import { logger } from "../../presentation/logger.js";
|
|
7
|
+
// --- Main Resolver ---
|
|
8
|
+
/**
|
|
9
|
+
* Resolves both the database engine and connection options together.
|
|
10
|
+
*
|
|
11
|
+
* Engine priority:
|
|
12
|
+
* 1. `--engine` CLI flag
|
|
13
|
+
* 2. `engine` field from the selected server profile
|
|
14
|
+
* 3. `engine` field from config defaults (`herdux config set engine mysql`)
|
|
15
|
+
* 4. `"postgres"` fallback
|
|
16
|
+
*
|
|
17
|
+
* Connection priority:
|
|
18
|
+
* 1. Explicit CLI flags (--host, --port, --user, --password)
|
|
19
|
+
* 2. Server profile values
|
|
20
|
+
* 3. Config default values
|
|
21
|
+
* 4. Engine-specific defaults (e.g., port 5432 for PG, 3306 for MySQL)
|
|
22
|
+
*/
|
|
23
|
+
export async function resolveEngineAndConnection(rawOpts) {
|
|
24
|
+
const savedDefaults = config.getDefault();
|
|
25
|
+
let serverName = rawOpts.server;
|
|
26
|
+
let profileEngine;
|
|
27
|
+
// --- Step 1: Resolve server profile (may provide engine) ---
|
|
28
|
+
if (!serverName && !rawOpts.port && !rawOpts.host && process.stdout.isTTY) {
|
|
29
|
+
const servers = config.listServers();
|
|
30
|
+
let serverNames = Object.keys(servers);
|
|
31
|
+
if (rawOpts.engine) {
|
|
32
|
+
serverNames = serverNames.filter((name) => servers[name].engine === rawOpts.engine);
|
|
33
|
+
}
|
|
34
|
+
const dEngine = savedDefaults.engine ?? "postgres";
|
|
35
|
+
const isDefaultCompatible = !rawOpts.engine || dEngine === rawOpts.engine;
|
|
36
|
+
const hasDefaults = Object.keys(savedDefaults).length > 0;
|
|
37
|
+
if (serverNames.length > 0 || (hasDefaults && isDefaultCompatible)) {
|
|
38
|
+
const choices = serverNames.map((name) => {
|
|
39
|
+
const srv = servers[name];
|
|
40
|
+
const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
|
|
41
|
+
return {
|
|
42
|
+
title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
|
|
43
|
+
value: name,
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
if (hasDefaults && isDefaultCompatible) {
|
|
47
|
+
const defaultEngineLabel = `, engine: ${dEngine}`;
|
|
48
|
+
choices.unshift({
|
|
49
|
+
title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
|
|
50
|
+
value: "__default__",
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (choices.length === 1) {
|
|
54
|
+
const choice = choices[0];
|
|
55
|
+
console.log(chalk.green(`✔ Auto-selected connection: › ${choice.title}`));
|
|
56
|
+
if (choice.value !== "__default__") {
|
|
57
|
+
serverName = choice.value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const response = await prompts({
|
|
62
|
+
type: "select",
|
|
63
|
+
name: "server",
|
|
64
|
+
message: "Select a connection to use:",
|
|
65
|
+
choices,
|
|
66
|
+
});
|
|
67
|
+
if (!response.server) {
|
|
68
|
+
console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
if (response.server !== "__default__") {
|
|
72
|
+
serverName = response.server;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// --- Step 2: Determine engine type ---
|
|
78
|
+
// Priority: CLI flag > profile engine > config default engine > "postgres"
|
|
79
|
+
let engineType;
|
|
80
|
+
if (rawOpts.engine) {
|
|
81
|
+
engineType = rawOpts.engine;
|
|
82
|
+
}
|
|
83
|
+
else if (serverName) {
|
|
84
|
+
const profile = config.getServer(serverName);
|
|
85
|
+
profileEngine = profile?.engine;
|
|
86
|
+
engineType = profileEngine ?? savedDefaults.engine ?? "postgres";
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
engineType = savedDefaults.engine ?? "postgres";
|
|
90
|
+
}
|
|
91
|
+
const engine = createEngine(engineType);
|
|
92
|
+
// --- Step 3: Resolve connection options ---
|
|
93
|
+
if (serverName) {
|
|
94
|
+
const serverProfile = config.getServer(serverName);
|
|
95
|
+
if (!serverProfile) {
|
|
96
|
+
logger.error(`Server profile "${serverName}" not found.`);
|
|
97
|
+
logger.info("Available profiles:");
|
|
98
|
+
const servers = config.listServers();
|
|
99
|
+
const names = Object.keys(servers);
|
|
100
|
+
if (names.length === 0) {
|
|
101
|
+
logger.line("(none)");
|
|
102
|
+
logger.line("Add one with: herdux config add-server <name> --port <port> --password <pw>");
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
for (const name of names) {
|
|
106
|
+
logger.line(` ${chalk.green(name)}: port=${servers[name].port ?? "?"}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
const defaults = engine.getDefaultConnectionOptions();
|
|
112
|
+
return {
|
|
113
|
+
engine,
|
|
114
|
+
engineType,
|
|
115
|
+
opts: {
|
|
116
|
+
host: rawOpts.host ?? serverProfile.host ?? defaults.host,
|
|
117
|
+
port: rawOpts.port ?? serverProfile.port,
|
|
118
|
+
user: rawOpts.user ?? serverProfile.user ?? defaults.user,
|
|
119
|
+
password: rawOpts.password ?? serverProfile.password,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
// No server profile — merge CLI opts with config defaults
|
|
124
|
+
const merged = {
|
|
125
|
+
host: rawOpts.host ?? savedDefaults.host,
|
|
126
|
+
port: rawOpts.port ?? savedDefaults.port,
|
|
127
|
+
user: rawOpts.user ?? savedDefaults.user,
|
|
128
|
+
password: rawOpts.password ?? savedDefaults.password,
|
|
129
|
+
};
|
|
130
|
+
if (merged.port) {
|
|
131
|
+
return { engine, engineType, opts: merged };
|
|
132
|
+
}
|
|
133
|
+
// --- Step 4: Auto-discovery ---
|
|
134
|
+
const spinner = ora(`Scanning for running ${engine.getEngineName()} servers...`).start();
|
|
135
|
+
const instances = await engine.discoverInstances(merged);
|
|
136
|
+
if (instances.length === 0) {
|
|
137
|
+
spinner.fail(`No running ${engine.getEngineName()} servers found`);
|
|
138
|
+
logger.blank();
|
|
139
|
+
logger.error(`Could not find any ${engine.getEngineName()} server on common ports.`);
|
|
140
|
+
logger.info("Options:");
|
|
141
|
+
logger.line("1. Specify port: herdux --port 5417 list");
|
|
142
|
+
logger.line("2. Save defaults: herdux config set port 5417");
|
|
143
|
+
logger.line("3. Add server: herdux config add-server pg17 --port 5417");
|
|
144
|
+
logger.blank();
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
if (instances.length === 1) {
|
|
148
|
+
const instance = instances[0];
|
|
149
|
+
spinner.succeed(`Auto-detected server on port ${chalk.cyan(instance.port)} (${instance.version})`);
|
|
150
|
+
return { engine, engineType, opts: { ...merged, port: instance.port } };
|
|
151
|
+
}
|
|
152
|
+
spinner.succeed(`Found ${instances.length} running servers`);
|
|
153
|
+
const choices = instances.map((inst) => ({
|
|
154
|
+
title: `Port ${inst.port} — ${inst.version}`,
|
|
155
|
+
value: inst.port,
|
|
156
|
+
}));
|
|
157
|
+
const response = await prompts({
|
|
158
|
+
type: "select",
|
|
159
|
+
name: "port",
|
|
160
|
+
message: `Multiple ${engine.getEngineName()} servers found. Which one do you want to use?`,
|
|
161
|
+
choices,
|
|
162
|
+
});
|
|
163
|
+
if (!response.port) {
|
|
164
|
+
console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
|
|
165
|
+
process.exit(0);
|
|
166
|
+
}
|
|
167
|
+
return { engine, engineType, opts: { ...merged, port: response.port } };
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=resolve-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "herdux-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Modern Database workflow CLI focused on developer experience, safety, and automation.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,8 +27,13 @@
|
|
|
27
27
|
"test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch --selectProjects unit",
|
|
28
28
|
"test:unit": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects unit",
|
|
29
29
|
"test:e2e": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --selectProjects e2e",
|
|
30
|
-
"test:e2e:
|
|
31
|
-
"test:e2e:
|
|
30
|
+
"test:e2e:pgsql": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js -- tests/e2e/postgres/",
|
|
31
|
+
"test:e2e:pgsql:up": "docker compose -f infra/docker/compose.e2e-pgsql.yml up -d --wait",
|
|
32
|
+
"test:e2e:pgsql:down": "docker compose -f infra/docker/compose.e2e-pgsql.yml down -v --remove-orphans",
|
|
33
|
+
"test:e2e:mysql": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js -- tests/e2e/mysql/",
|
|
34
|
+
"test:e2e:mysql:up": "docker compose -f infra/docker/compose.e2e-mysql.yml up -d --wait",
|
|
35
|
+
"test:e2e:mysql:down": "docker compose -f infra/docker/compose.e2e-mysql.yml down -v --remove-orphans",
|
|
36
|
+
"prepare": "husky"
|
|
32
37
|
},
|
|
33
38
|
"keywords": [
|
|
34
39
|
"postgresql",
|
|
@@ -51,7 +56,7 @@
|
|
|
51
56
|
"license": "MIT",
|
|
52
57
|
"dependencies": {
|
|
53
58
|
"chalk": "^5.6.2",
|
|
54
|
-
"commander": "^
|
|
59
|
+
"commander": "^12.1.0",
|
|
55
60
|
"execa": "^9.6.1",
|
|
56
61
|
"ora": "^8.2.0",
|
|
57
62
|
"prompts": "^2.4.2"
|
|
@@ -60,10 +65,15 @@
|
|
|
60
65
|
"@types/jest": "^30.0.0",
|
|
61
66
|
"@types/node": "^25.3.0",
|
|
62
67
|
"@types/prompts": "^2.4.9",
|
|
68
|
+
"husky": "^9.1.7",
|
|
63
69
|
"jest": "^30.2.0",
|
|
70
|
+
"lint-staged": "^15.2.10",
|
|
64
71
|
"prettier": "^3.8.1",
|
|
65
72
|
"ts-jest": "^29.4.6",
|
|
66
73
|
"tsx": "^4.21.0",
|
|
67
74
|
"typescript": "^5.9.3"
|
|
75
|
+
},
|
|
76
|
+
"lint-staged": {
|
|
77
|
+
"*.{ts,md,json}": "prettier --write"
|
|
68
78
|
}
|
|
69
79
|
}
|