herdux-cli 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +123 -35
  2. package/README.pt-BR.md +91 -33
  3. package/dist/commands/backup.d.ts.map +1 -1
  4. package/dist/commands/backup.js +3 -5
  5. package/dist/commands/backup.js.map +1 -1
  6. package/dist/commands/clean.d.ts.map +1 -1
  7. package/dist/commands/clean.js +3 -5
  8. package/dist/commands/clean.js.map +1 -1
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +11 -5
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/create.d.ts.map +1 -1
  13. package/dist/commands/create.js +3 -5
  14. package/dist/commands/create.js.map +1 -1
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +2 -4
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/drop.d.ts.map +1 -1
  19. package/dist/commands/drop.js +3 -5
  20. package/dist/commands/drop.js.map +1 -1
  21. package/dist/commands/list.d.ts.map +1 -1
  22. package/dist/commands/list.js +3 -5
  23. package/dist/commands/list.js.map +1 -1
  24. package/dist/commands/restore.d.ts.map +1 -1
  25. package/dist/commands/restore.js +3 -5
  26. package/dist/commands/restore.js.map +1 -1
  27. package/dist/commands/version.js +3 -3
  28. package/dist/commands/version.js.map +1 -1
  29. package/dist/core/interfaces/database-engine.interface.d.ts +5 -0
  30. package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -1
  31. package/dist/index.js +2 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/infra/command-runner.d.ts +2 -0
  34. package/dist/infra/command-runner.d.ts.map +1 -1
  35. package/dist/infra/command-runner.js +1 -0
  36. package/dist/infra/command-runner.js.map +1 -1
  37. package/dist/infra/config/config.service.d.ts +8 -5
  38. package/dist/infra/config/config.service.d.ts.map +1 -1
  39. package/dist/infra/config/config.service.js.map +1 -1
  40. package/dist/infra/engines/engine-factory.d.ts +3 -0
  41. package/dist/infra/engines/engine-factory.d.ts.map +1 -0
  42. package/dist/infra/engines/engine-factory.js +12 -0
  43. package/dist/infra/engines/engine-factory.js.map +1 -0
  44. package/dist/infra/engines/mysql/mysql-env.d.ts +11 -0
  45. package/dist/infra/engines/mysql/mysql-env.d.ts.map +1 -0
  46. package/dist/infra/engines/mysql/mysql-env.js +30 -0
  47. package/dist/infra/engines/mysql/mysql-env.js.map +1 -0
  48. package/dist/infra/engines/mysql/mysql.engine.d.ts +21 -0
  49. package/dist/infra/engines/mysql/mysql.engine.d.ts.map +1 -0
  50. package/dist/infra/engines/mysql/mysql.engine.js +311 -0
  51. package/dist/infra/engines/mysql/mysql.engine.js.map +1 -0
  52. package/dist/infra/engines/postgres/postgres.engine.d.ts +1 -0
  53. package/dist/infra/engines/postgres/postgres.engine.d.ts.map +1 -1
  54. package/dist/infra/engines/postgres/postgres.engine.js +3 -0
  55. package/dist/infra/engines/postgres/postgres.engine.js.map +1 -1
  56. package/dist/infra/engines/resolve-connection.d.ts +26 -0
  57. package/dist/infra/engines/resolve-connection.d.ts.map +1 -0
  58. package/dist/infra/engines/resolve-connection.js +156 -0
  59. package/dist/infra/engines/resolve-connection.js.map +1 -0
  60. package/package.json +14 -4
@@ -0,0 +1,156 @@
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
+ const serverNames = Object.keys(servers);
31
+ if (serverNames.length > 0) {
32
+ const choices = serverNames.map((name) => {
33
+ const srv = servers[name];
34
+ const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
35
+ return {
36
+ title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
37
+ value: name,
38
+ };
39
+ });
40
+ if (Object.keys(savedDefaults).length > 0) {
41
+ const defaultEngineLabel = savedDefaults.engine
42
+ ? `, engine: ${savedDefaults.engine}`
43
+ : "";
44
+ choices.unshift({
45
+ title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
46
+ value: "__default__",
47
+ });
48
+ }
49
+ const response = await prompts({
50
+ type: "select",
51
+ name: "server",
52
+ message: "Select a connection to use:",
53
+ choices,
54
+ });
55
+ if (!response.server) {
56
+ console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
57
+ process.exit(0);
58
+ }
59
+ if (response.server !== "__default__") {
60
+ serverName = response.server;
61
+ }
62
+ }
63
+ }
64
+ // --- Step 2: Determine engine type ---
65
+ // Priority: CLI flag > profile engine > config default engine > "postgres"
66
+ let engineType;
67
+ if (rawOpts.engine) {
68
+ engineType = rawOpts.engine;
69
+ }
70
+ else if (serverName) {
71
+ const profile = config.getServer(serverName);
72
+ profileEngine = profile?.engine;
73
+ engineType = profileEngine ?? savedDefaults.engine ?? "postgres";
74
+ }
75
+ else {
76
+ engineType = savedDefaults.engine ?? "postgres";
77
+ }
78
+ const engine = createEngine(engineType);
79
+ // --- Step 3: Resolve connection options ---
80
+ if (serverName) {
81
+ const serverProfile = config.getServer(serverName);
82
+ if (!serverProfile) {
83
+ logger.error(`Server profile "${serverName}" not found.`);
84
+ logger.info("Available profiles:");
85
+ const servers = config.listServers();
86
+ const names = Object.keys(servers);
87
+ if (names.length === 0) {
88
+ logger.line("(none)");
89
+ logger.line("Add one with: herdux config add-server <name> --port <port> --password <pw>");
90
+ }
91
+ else {
92
+ for (const name of names) {
93
+ logger.line(` ${chalk.green(name)}: port=${servers[name].port ?? "?"}`);
94
+ }
95
+ }
96
+ process.exit(1);
97
+ }
98
+ const defaults = engine.getDefaultConnectionOptions();
99
+ return {
100
+ engine,
101
+ engineType,
102
+ opts: {
103
+ host: rawOpts.host ?? serverProfile.host ?? defaults.host,
104
+ port: rawOpts.port ?? serverProfile.port,
105
+ user: rawOpts.user ?? serverProfile.user ?? defaults.user,
106
+ password: rawOpts.password ?? serverProfile.password,
107
+ },
108
+ };
109
+ }
110
+ // No server profile — merge CLI opts with config defaults
111
+ const merged = {
112
+ host: rawOpts.host ?? savedDefaults.host,
113
+ port: rawOpts.port ?? savedDefaults.port,
114
+ user: rawOpts.user ?? savedDefaults.user,
115
+ password: rawOpts.password ?? savedDefaults.password,
116
+ };
117
+ if (merged.port) {
118
+ return { engine, engineType, opts: merged };
119
+ }
120
+ // --- Step 4: Auto-discovery ---
121
+ const spinner = ora(`Scanning for running ${engine.getEngineName()} servers...`).start();
122
+ const instances = await engine.discoverInstances(merged);
123
+ if (instances.length === 0) {
124
+ spinner.fail(`No running ${engine.getEngineName()} servers found`);
125
+ logger.blank();
126
+ logger.error(`Could not find any ${engine.getEngineName()} server on common ports.`);
127
+ logger.info("Options:");
128
+ logger.line("1. Specify port: herdux --port 5417 list");
129
+ logger.line("2. Save defaults: herdux config set port 5417");
130
+ logger.line("3. Add server: herdux config add-server pg17 --port 5417");
131
+ logger.blank();
132
+ process.exit(1);
133
+ }
134
+ if (instances.length === 1) {
135
+ const instance = instances[0];
136
+ spinner.succeed(`Auto-detected server on port ${chalk.cyan(instance.port)} (${instance.version})`);
137
+ return { engine, engineType, opts: { ...merged, port: instance.port } };
138
+ }
139
+ spinner.succeed(`Found ${instances.length} running servers`);
140
+ const choices = instances.map((inst) => ({
141
+ title: `Port ${inst.port} — ${inst.version}`,
142
+ value: inst.port,
143
+ }));
144
+ const response = await prompts({
145
+ type: "select",
146
+ name: "port",
147
+ message: `Multiple ${engine.getEngineName()} servers found. Which one do you want to use?`,
148
+ choices,
149
+ });
150
+ if (!response.port) {
151
+ console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
152
+ process.exit(0);
153
+ }
154
+ return { engine, engineType, opts: { ...merged, port: response.port } };
155
+ }
156
+ //# 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.1",
3
+ "version": "0.4.0",
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:up": "docker compose -f infra/docker/compose.e2e.yml up -d --wait",
31
- "test:e2e:down": "docker compose -f infra/docker/compose.e2e.yml down -v --remove-orphans"
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": "^13.1.0",
59
+ "commander": "^14.0.3",
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": "^16.2.7",
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
  }