herdux-cli 0.1.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.
Files changed (75) hide show
  1. package/README.md +370 -0
  2. package/README.pt-BR.md +369 -0
  3. package/dist/commands/backup.d.ts +3 -0
  4. package/dist/commands/backup.d.ts.map +1 -0
  5. package/dist/commands/backup.js +66 -0
  6. package/dist/commands/backup.js.map +1 -0
  7. package/dist/commands/clean.d.ts +3 -0
  8. package/dist/commands/clean.d.ts.map +1 -0
  9. package/dist/commands/clean.js +102 -0
  10. package/dist/commands/clean.js.map +1 -0
  11. package/dist/commands/config.d.ts +3 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +146 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/create.d.ts +3 -0
  16. package/dist/commands/create.d.ts.map +1 -0
  17. package/dist/commands/create.js +26 -0
  18. package/dist/commands/create.js.map +1 -0
  19. package/dist/commands/doctor.d.ts +3 -0
  20. package/dist/commands/doctor.d.ts.map +1 -0
  21. package/dist/commands/doctor.js +92 -0
  22. package/dist/commands/doctor.js.map +1 -0
  23. package/dist/commands/drop.d.ts +3 -0
  24. package/dist/commands/drop.d.ts.map +1 -0
  25. package/dist/commands/drop.js +40 -0
  26. package/dist/commands/drop.js.map +1 -0
  27. package/dist/commands/list.d.ts +3 -0
  28. package/dist/commands/list.d.ts.map +1 -0
  29. package/dist/commands/list.js +55 -0
  30. package/dist/commands/list.js.map +1 -0
  31. package/dist/commands/restore.d.ts +3 -0
  32. package/dist/commands/restore.d.ts.map +1 -0
  33. package/dist/commands/restore.js +54 -0
  34. package/dist/commands/restore.js.map +1 -0
  35. package/dist/commands/version.d.ts +3 -0
  36. package/dist/commands/version.d.ts.map +1 -0
  37. package/dist/commands/version.js +42 -0
  38. package/dist/commands/version.js.map +1 -0
  39. package/dist/core/command-runner.d.ts +12 -0
  40. package/dist/core/command-runner.d.ts.map +1 -0
  41. package/dist/core/command-runner.js +20 -0
  42. package/dist/core/command-runner.js.map +1 -0
  43. package/dist/core/logger.d.ts +10 -0
  44. package/dist/core/logger.d.ts.map +1 -0
  45. package/dist/core/logger.js +25 -0
  46. package/dist/core/logger.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +33 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/services/backup.service.d.ts +4 -0
  52. package/dist/services/backup.service.d.ts.map +1 -0
  53. package/dist/services/backup.service.js +99 -0
  54. package/dist/services/backup.service.js.map +1 -0
  55. package/dist/services/config.service.d.ts +26 -0
  56. package/dist/services/config.service.d.ts.map +1 -0
  57. package/dist/services/config.service.js +83 -0
  58. package/dist/services/config.service.js.map +1 -0
  59. package/dist/services/environment.service.d.ts +4 -0
  60. package/dist/services/environment.service.d.ts.map +1 -0
  61. package/dist/services/environment.service.js +51 -0
  62. package/dist/services/environment.service.js.map +1 -0
  63. package/dist/services/postgres.service.d.ts +27 -0
  64. package/dist/services/postgres.service.d.ts.map +1 -0
  65. package/dist/services/postgres.service.js +180 -0
  66. package/dist/services/postgres.service.js.map +1 -0
  67. package/dist/utils/detect-binary.d.ts +3 -0
  68. package/dist/utils/detect-binary.d.ts.map +1 -0
  69. package/dist/utils/detect-binary.js +16 -0
  70. package/dist/utils/detect-binary.js.map +1 -0
  71. package/dist/utils/resolve-connection.d.ts +3 -0
  72. package/dist/utils/resolve-connection.d.ts.map +1 -0
  73. package/dist/utils/resolve-connection.js +107 -0
  74. package/dist/utils/resolve-connection.js.map +1 -0
  75. package/package.json +46 -0
@@ -0,0 +1,107 @@
1
+ import ora from "ora";
2
+ import chalk from "chalk";
3
+ import prompts from "prompts";
4
+ import { discoverInstances } from "../services/postgres.service.js";
5
+ import * as config from "../services/config.service.js";
6
+ import { logger } from "../core/logger.js";
7
+ export async function resolveConnectionOptions(opts, serverName) {
8
+ const savedDefaults = config.getDefault();
9
+ if (!serverName && !opts.port && !opts.host && process.stdout.isTTY) {
10
+ const servers = config.listServers();
11
+ const serverNames = Object.keys(servers);
12
+ if (serverNames.length > 0) {
13
+ const choices = serverNames.map((name) => ({
14
+ title: `${name} (port ${servers[name].port ?? "?"})`,
15
+ value: name,
16
+ }));
17
+ if (Object.keys(savedDefaults).length > 0) {
18
+ choices.unshift({
19
+ title: `Default connection (port ${savedDefaults.port ?? "?"})`,
20
+ value: "__default__",
21
+ });
22
+ }
23
+ const response = await prompts({
24
+ type: "select",
25
+ name: "server",
26
+ message: "Select a connection to use:",
27
+ choices,
28
+ });
29
+ if (!response.server) {
30
+ console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
31
+ process.exit(0);
32
+ }
33
+ if (response.server !== "__default__") {
34
+ serverName = response.server;
35
+ }
36
+ }
37
+ }
38
+ if (serverName) {
39
+ const serverProfile = config.getServer(serverName);
40
+ if (!serverProfile) {
41
+ logger.error(`Server profile "${serverName}" not found.`);
42
+ logger.info("Available profiles:");
43
+ const servers = config.listServers();
44
+ const names = Object.keys(servers);
45
+ if (names.length === 0) {
46
+ logger.line("(none)");
47
+ logger.line("Add one with: herdux config add-server <name> --port <port> --password <pw>");
48
+ }
49
+ else {
50
+ for (const name of names) {
51
+ logger.line(` ${chalk.green(name)}: port=${servers[name].port ?? "?"}`);
52
+ }
53
+ }
54
+ process.exit(1);
55
+ }
56
+ return {
57
+ host: opts.host ?? serverProfile.host ?? "localhost",
58
+ port: opts.port ?? serverProfile.port,
59
+ user: opts.user ?? serverProfile.user ?? "postgres",
60
+ password: opts.password ?? serverProfile.password,
61
+ };
62
+ }
63
+ const merged = {
64
+ host: opts.host ?? savedDefaults.host,
65
+ port: opts.port ?? savedDefaults.port,
66
+ user: opts.user ?? savedDefaults.user,
67
+ password: opts.password ?? savedDefaults.password,
68
+ };
69
+ if (merged.port) {
70
+ return merged;
71
+ }
72
+ const spinner = ora("Scanning for running PostgreSQL servers...").start();
73
+ const instances = await discoverInstances(merged);
74
+ if (instances.length === 0) {
75
+ spinner.fail("No running PostgreSQL servers found");
76
+ logger.blank();
77
+ logger.error("Could not find any PostgreSQL server on common ports.");
78
+ logger.info("Options:");
79
+ logger.line("1. Specify port: herdux --port 5417 list");
80
+ logger.line("2. Save defaults: herdux config set port 5417");
81
+ logger.line("3. Add server: herdux config add-server pg17 --port 5417");
82
+ logger.blank();
83
+ process.exit(1);
84
+ }
85
+ if (instances.length === 1) {
86
+ const instance = instances[0];
87
+ spinner.succeed(`Auto-detected server on port ${chalk.cyan(instance.port)} (${instance.version})`);
88
+ return { ...merged, port: instance.port };
89
+ }
90
+ spinner.succeed(` Found ${instances.length} running servers`);
91
+ const choices = instances.map((inst) => ({
92
+ title: `Port ${inst.port} — ${inst.version}`,
93
+ value: inst.port,
94
+ }));
95
+ const response = await prompts({
96
+ type: "select",
97
+ name: "port",
98
+ message: "Multiple PostgreSQL servers found. Which one do you want to use?",
99
+ choices,
100
+ });
101
+ if (!response.port) {
102
+ console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
103
+ process.exit(0);
104
+ }
105
+ return { ...merged, port: response.port };
106
+ }
107
+ //# sourceMappingURL=resolve-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../src/utils/resolve-connection.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "herdux-cli",
3
+ "version": "0.1.1",
4
+ "description": "Modern Database workflow CLI focused on developer experience, safety, and automation.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/herdux/herdux.git"
8
+ },
9
+ "type": "module",
10
+ "main": "./dist/index.js",
11
+ "bin": {
12
+ "herdux": "./dist/index.js"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "README.pt-BR.md"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "dev": "tsx src/index.ts",
22
+ "start": "node dist/index.js"
23
+ },
24
+ "keywords": [
25
+ "postgresql",
26
+ "cli",
27
+ "database",
28
+ "backup",
29
+ "restore"
30
+ ],
31
+ "author": "",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "chalk": "^5.6.2",
35
+ "commander": "^13.1.0",
36
+ "execa": "^9.6.1",
37
+ "ora": "^8.2.0",
38
+ "prompts": "^2.4.2"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^25.3.0",
42
+ "@types/prompts": "^2.4.9",
43
+ "tsx": "^4.21.0",
44
+ "typescript": "^5.9.3"
45
+ }
46
+ }