@minecraft-docker/mcctl 1.6.1 → 1.6.2

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 (90) hide show
  1. package/dist/commands/console/api.d.ts +19 -0
  2. package/dist/commands/console/api.d.ts.map +1 -0
  3. package/dist/commands/console/api.js +399 -0
  4. package/dist/commands/console/api.js.map +1 -0
  5. package/dist/commands/console/index.d.ts +10 -0
  6. package/dist/commands/console/index.d.ts.map +1 -0
  7. package/dist/commands/console/index.js +12 -0
  8. package/dist/commands/console/index.js.map +1 -0
  9. package/dist/commands/console/init.d.ts +47 -0
  10. package/dist/commands/console/init.d.ts.map +1 -0
  11. package/dist/commands/console/init.js +491 -0
  12. package/dist/commands/console/init.js.map +1 -0
  13. package/dist/commands/console/remove.d.ts +25 -0
  14. package/dist/commands/console/remove.d.ts.map +1 -0
  15. package/dist/commands/console/remove.js +189 -0
  16. package/dist/commands/console/remove.js.map +1 -0
  17. package/dist/commands/console/service.d.ts +40 -0
  18. package/dist/commands/console/service.d.ts.map +1 -0
  19. package/dist/commands/console/service.js +321 -0
  20. package/dist/commands/console/service.js.map +1 -0
  21. package/dist/commands/console/user.d.ts +17 -0
  22. package/dist/commands/console/user.d.ts.map +1 -0
  23. package/dist/commands/console/user.js +431 -0
  24. package/dist/commands/console/user.js.map +1 -0
  25. package/dist/commands/create.d.ts.map +1 -1
  26. package/dist/commands/create.js +4 -1
  27. package/dist/commands/create.js.map +1 -1
  28. package/dist/commands/delete.d.ts.map +1 -1
  29. package/dist/commands/delete.js +4 -1
  30. package/dist/commands/delete.js.map +1 -1
  31. package/dist/commands/index.d.ts +3 -0
  32. package/dist/commands/index.d.ts.map +1 -1
  33. package/dist/commands/index.js +5 -0
  34. package/dist/commands/index.js.map +1 -1
  35. package/dist/commands/init.d.ts.map +1 -1
  36. package/dist/commands/init.js +58 -26
  37. package/dist/commands/init.js.map +1 -1
  38. package/dist/commands/mod.d.ts +19 -0
  39. package/dist/commands/mod.d.ts.map +1 -0
  40. package/dist/commands/mod.js +441 -0
  41. package/dist/commands/mod.js.map +1 -0
  42. package/dist/commands/msg.d.ts +12 -0
  43. package/dist/commands/msg.d.ts.map +1 -0
  44. package/dist/commands/msg.js +273 -0
  45. package/dist/commands/msg.js.map +1 -0
  46. package/dist/commands/player-online.js +4 -2
  47. package/dist/commands/player-online.js.map +1 -1
  48. package/dist/commands/world.d.ts +2 -0
  49. package/dist/commands/world.d.ts.map +1 -1
  50. package/dist/commands/world.js +104 -1
  51. package/dist/commands/world.js.map +1 -1
  52. package/dist/index.js +162 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +2 -1
  55. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -1
  56. package/dist/infrastructure/adapters/ClackPromptAdapter.js +11 -0
  57. package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -1
  58. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
  59. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
  60. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
  61. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
  62. package/dist/infrastructure/adapters/index.d.ts +1 -0
  63. package/dist/infrastructure/adapters/index.d.ts.map +1 -1
  64. package/dist/infrastructure/adapters/index.js +2 -1
  65. package/dist/infrastructure/adapters/index.js.map +1 -1
  66. package/dist/infrastructure/index.d.ts +1 -0
  67. package/dist/infrastructure/index.d.ts.map +1 -1
  68. package/dist/infrastructure/index.js +2 -1
  69. package/dist/infrastructure/index.js.map +1 -1
  70. package/dist/lib/admin-config.d.ts +66 -0
  71. package/dist/lib/admin-config.d.ts.map +1 -0
  72. package/dist/lib/admin-config.js +130 -0
  73. package/dist/lib/admin-config.js.map +1 -0
  74. package/dist/lib/pm2-utils.d.ts +71 -0
  75. package/dist/lib/pm2-utils.d.ts.map +1 -0
  76. package/dist/lib/pm2-utils.js +155 -0
  77. package/dist/lib/pm2-utils.js.map +1 -0
  78. package/dist/lib/prompts/ip-select.d.ts +25 -0
  79. package/dist/lib/prompts/ip-select.d.ts.map +1 -0
  80. package/dist/lib/prompts/ip-select.js +255 -0
  81. package/dist/lib/prompts/ip-select.js.map +1 -0
  82. package/dist/lib/shell.d.ts +2 -0
  83. package/dist/lib/shell.d.ts.map +1 -1
  84. package/dist/lib/shell.js +7 -4
  85. package/dist/lib/shell.js.map +1 -1
  86. package/dist/lib/sudo-utils.d.ts +14 -0
  87. package/dist/lib/sudo-utils.d.ts.map +1 -0
  88. package/dist/lib/sudo-utils.js +53 -0
  89. package/dist/lib/sudo-utils.js.map +1 -0
  90. package/package.json +8 -2
@@ -0,0 +1,71 @@
1
+ /**
2
+ * PM2 Utility Functions
3
+ *
4
+ * Helper functions for PM2 operations including:
5
+ * - PM2 installation check
6
+ * - PM2 connection management
7
+ * - Ecosystem config path resolution
8
+ */
9
+ import { Paths } from '@minecraft-docker/shared';
10
+ /**
11
+ * Default ecosystem config filename
12
+ */
13
+ export declare const ECOSYSTEM_CONFIG_FILE = "ecosystem.config.cjs";
14
+ /**
15
+ * PM2 service names
16
+ */
17
+ export declare const PM2_SERVICE_NAMES: {
18
+ readonly API: "mcctl-api";
19
+ readonly CONSOLE: "mcctl-console";
20
+ };
21
+ /**
22
+ * Check if PM2 is installed (globally or as a dependency)
23
+ * @returns Object with installation status and version
24
+ */
25
+ export declare function checkPm2Installation(): {
26
+ installed: boolean;
27
+ path?: string;
28
+ version?: string;
29
+ };
30
+ /**
31
+ * Get the ecosystem config path for the given platform
32
+ * @param paths - Paths instance
33
+ * @returns Absolute path to ecosystem.config.cjs
34
+ */
35
+ export declare function getEcosystemConfigPath(paths: Paths): string;
36
+ /**
37
+ * Check if ecosystem config exists
38
+ * @param paths - Paths instance
39
+ * @returns true if config exists
40
+ */
41
+ export declare function ecosystemConfigExists(paths: Paths): boolean;
42
+ /**
43
+ * Get PM2 log file paths for a service
44
+ * @param paths - Paths instance
45
+ * @param serviceName - Service name
46
+ * @returns Object with output and error log paths
47
+ */
48
+ export declare function getPm2LogPaths(paths: Paths, serviceName: string): {
49
+ output: string;
50
+ error: string;
51
+ };
52
+ /**
53
+ * Read log file content
54
+ * @param logPath - Path to log file
55
+ * @param lines - Number of lines to read (default: 100)
56
+ * @returns Log content
57
+ */
58
+ export declare function readLogFile(logPath: string, lines?: number): string;
59
+ /**
60
+ * Format PM2 error for user-friendly display
61
+ * @param error - Error object
62
+ * @returns Formatted error message
63
+ */
64
+ export declare function formatPm2Error(error: unknown): string;
65
+ /**
66
+ * Parse PM2 status to our ServiceStatusEnum
67
+ * @param pm2Status - PM2 process status string
68
+ * @returns Normalized status string
69
+ */
70
+ export declare function normalizePm2Status(pm2Status: string): string;
71
+ //# sourceMappingURL=pm2-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2-utils.d.ts","sourceRoot":"","sources":["../../src/lib/pm2-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAmC9F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,GAClB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMnC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,MAAM,CAaxE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAerD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmB5D"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * PM2 Utility Functions
3
+ *
4
+ * Helper functions for PM2 operations including:
5
+ * - PM2 installation check
6
+ * - PM2 connection management
7
+ * - Ecosystem config path resolution
8
+ */
9
+ import { spawnSync } from 'node:child_process';
10
+ import { existsSync, readFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ /**
13
+ * Default ecosystem config filename
14
+ */
15
+ export const ECOSYSTEM_CONFIG_FILE = 'ecosystem.config.cjs';
16
+ /**
17
+ * PM2 service names
18
+ */
19
+ export const PM2_SERVICE_NAMES = {
20
+ API: 'mcctl-api',
21
+ CONSOLE: 'mcctl-console',
22
+ };
23
+ /**
24
+ * Check if PM2 is installed (globally or as a dependency)
25
+ * @returns Object with installation status and version
26
+ */
27
+ export function checkPm2Installation() {
28
+ // First check if pm2 is available in PATH (global installation)
29
+ const globalResult = spawnSync('which', ['pm2'], {
30
+ encoding: 'utf-8',
31
+ stdio: ['pipe', 'pipe', 'pipe'],
32
+ });
33
+ if (globalResult.status === 0 && globalResult.stdout) {
34
+ const pm2Path = globalResult.stdout.trim();
35
+ // Get version
36
+ const versionResult = spawnSync('pm2', ['--version'], {
37
+ encoding: 'utf-8',
38
+ stdio: ['pipe', 'pipe', 'pipe'],
39
+ });
40
+ return {
41
+ installed: true,
42
+ path: pm2Path,
43
+ version: versionResult.status === 0 ? versionResult.stdout.trim() : undefined,
44
+ };
45
+ }
46
+ // Check if pm2 module can be imported (local installation via npm)
47
+ // The pm2 programmatic API works without global installation
48
+ try {
49
+ // We already have pm2 as a dependency, so it's always available
50
+ // Just return true - the actual PM2 operations will work via the API
51
+ return {
52
+ installed: true,
53
+ version: 'local',
54
+ };
55
+ }
56
+ catch {
57
+ return { installed: false };
58
+ }
59
+ }
60
+ /**
61
+ * Get the ecosystem config path for the given platform
62
+ * @param paths - Paths instance
63
+ * @returns Absolute path to ecosystem.config.cjs
64
+ */
65
+ export function getEcosystemConfigPath(paths) {
66
+ return join(paths.platform, ECOSYSTEM_CONFIG_FILE);
67
+ }
68
+ /**
69
+ * Check if ecosystem config exists
70
+ * @param paths - Paths instance
71
+ * @returns true if config exists
72
+ */
73
+ export function ecosystemConfigExists(paths) {
74
+ return existsSync(getEcosystemConfigPath(paths));
75
+ }
76
+ /**
77
+ * Get PM2 log file paths for a service
78
+ * @param paths - Paths instance
79
+ * @param serviceName - Service name
80
+ * @returns Object with output and error log paths
81
+ */
82
+ export function getPm2LogPaths(paths, serviceName) {
83
+ const logsDir = join(paths.platform, 'logs');
84
+ return {
85
+ output: join(logsDir, `${serviceName}-out.log`),
86
+ error: join(logsDir, `${serviceName}-error.log`),
87
+ };
88
+ }
89
+ /**
90
+ * Read log file content
91
+ * @param logPath - Path to log file
92
+ * @param lines - Number of lines to read (default: 100)
93
+ * @returns Log content
94
+ */
95
+ export function readLogFile(logPath, lines = 100) {
96
+ if (!existsSync(logPath)) {
97
+ return '';
98
+ }
99
+ try {
100
+ const content = readFileSync(logPath, 'utf-8');
101
+ const allLines = content.split('\n');
102
+ const startIndex = Math.max(0, allLines.length - lines);
103
+ return allLines.slice(startIndex).join('\n');
104
+ }
105
+ catch {
106
+ return '';
107
+ }
108
+ }
109
+ /**
110
+ * Format PM2 error for user-friendly display
111
+ * @param error - Error object
112
+ * @returns Formatted error message
113
+ */
114
+ export function formatPm2Error(error) {
115
+ if (error instanceof Error) {
116
+ // Common PM2 errors
117
+ if (error.message.includes('ENOENT')) {
118
+ return 'PM2 or the specified script was not found';
119
+ }
120
+ if (error.message.includes('EACCES')) {
121
+ return 'Permission denied. Try running with elevated privileges';
122
+ }
123
+ if (error.message.includes('ECONNREFUSED')) {
124
+ return 'Could not connect to PM2 daemon. It may not be running';
125
+ }
126
+ return error.message;
127
+ }
128
+ return String(error);
129
+ }
130
+ /**
131
+ * Parse PM2 status to our ServiceStatusEnum
132
+ * @param pm2Status - PM2 process status string
133
+ * @returns Normalized status string
134
+ */
135
+ export function normalizePm2Status(pm2Status) {
136
+ switch (pm2Status) {
137
+ case 'online':
138
+ return 'online';
139
+ case 'stopping':
140
+ return 'stopping';
141
+ case 'stopped':
142
+ return 'stopped';
143
+ case 'errored':
144
+ return 'errored';
145
+ case 'launching':
146
+ return 'online'; // Treat launching as online for simplicity
147
+ case 'waiting_restart':
148
+ return 'stopping'; // Treat waiting_restart as stopping
149
+ case 'one-launch-status':
150
+ return 'one-launch-status';
151
+ default:
152
+ return 'stopped';
153
+ }
154
+ }
155
+ //# sourceMappingURL=pm2-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pm2-utils.js","sourceRoot":"","sources":["../../src/lib/pm2-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * IP address selection prompt component
3
+ * Allows user to select host IP(s) for server hostname routing
4
+ */
5
+ export interface NetworkInterface {
6
+ name: string;
7
+ address: string;
8
+ family: 'IPv4' | 'IPv6';
9
+ internal: boolean;
10
+ cidr: string | null;
11
+ }
12
+ /**
13
+ * Get all IPv4 addresses from network interfaces
14
+ */
15
+ export declare function getNetworkInterfaces(): NetworkInterface[];
16
+ /**
17
+ * Prompt user to select IP addresses for server hostname routing
18
+ * Returns selected IPs as comma-separated string, or null if cancelled
19
+ */
20
+ export declare function selectHostIPs(): Promise<string | null>;
21
+ /**
22
+ * Prompt for single IP selection (simpler version)
23
+ */
24
+ export declare function selectSingleIP(): Promise<string | null>;
25
+ //# sourceMappingURL=ip-select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-select.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/ip-select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAsBzD;AAuED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+F5D;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0E7D"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * IP address selection prompt component
3
+ * Allows user to select host IP(s) for server hostname routing
4
+ */
5
+ import { select, multiselect, text, isCancel } from '@clack/prompts';
6
+ import { networkInterfaces } from 'node:os';
7
+ import { colors } from '@minecraft-docker/shared';
8
+ /**
9
+ * Get all IPv4 addresses from network interfaces
10
+ */
11
+ export function getNetworkInterfaces() {
12
+ const interfaces = networkInterfaces();
13
+ const result = [];
14
+ for (const [name, addrs] of Object.entries(interfaces)) {
15
+ if (!addrs)
16
+ continue;
17
+ for (const addr of addrs) {
18
+ // Only IPv4 and non-internal addresses
19
+ if (addr.family === 'IPv4' && !addr.internal) {
20
+ result.push({
21
+ name,
22
+ address: addr.address,
23
+ family: 'IPv4',
24
+ internal: addr.internal,
25
+ cidr: addr.cidr,
26
+ });
27
+ }
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ /**
33
+ * Detect interface type from name and IP range
34
+ */
35
+ function detectInterfaceType(iface) {
36
+ const { name, address } = iface;
37
+ const nameLower = name.toLowerCase();
38
+ // VPN detection by interface name
39
+ if (nameLower.includes('tailscale') || nameLower.startsWith('tailscale')) {
40
+ return 'Tailscale VPN';
41
+ }
42
+ if (nameLower.includes('nordlynx') || nameLower.startsWith('nordlynx')) {
43
+ return 'NordVPN Meshnet';
44
+ }
45
+ if (nameLower.includes('nordtun') || nameLower.startsWith('nordtun')) {
46
+ return 'NordVPN';
47
+ }
48
+ if (nameLower.includes('zt') || nameLower.startsWith('zt')) {
49
+ return 'ZeroTier VPN';
50
+ }
51
+ if (nameLower.includes('wg') || nameLower.startsWith('wg')) {
52
+ return 'WireGuard VPN';
53
+ }
54
+ if (nameLower.includes('tun') || nameLower.includes('tap')) {
55
+ return 'VPN Tunnel';
56
+ }
57
+ if (nameLower.includes('nebula')) {
58
+ return 'Nebula VPN';
59
+ }
60
+ // IP range detection for VPNs (100.64.0.0/10 = CGNAT range used by mesh VPNs)
61
+ if (address.startsWith('100.')) {
62
+ // 100.64.0.0 - 100.127.255.255 is CGNAT range
63
+ const secondOctet = parseInt(address.split('.')[1] || '0', 10);
64
+ if (secondOctet >= 64 && secondOctet <= 127) {
65
+ // Could be Tailscale (100.x.x.x) or NordVPN Meshnet (100.64.0.0/10)
66
+ // Check interface name for more specific detection
67
+ if (nameLower.includes('nord')) {
68
+ return 'NordVPN Meshnet';
69
+ }
70
+ return 'Tailscale VPN';
71
+ }
72
+ // Other 100.x.x.x ranges - likely Tailscale
73
+ return 'Tailscale VPN';
74
+ }
75
+ if (address.startsWith('10.147.') || address.startsWith('10.144.')) {
76
+ return 'ZeroTier VPN'; // ZeroTier common ranges
77
+ }
78
+ // Standard interface types
79
+ if (nameLower.includes('docker') || nameLower.startsWith('br-')) {
80
+ return 'Docker Network';
81
+ }
82
+ if (nameLower.includes('veth')) {
83
+ return 'Container';
84
+ }
85
+ if (nameLower.startsWith('eth') || nameLower.startsWith('en')) {
86
+ return 'Ethernet';
87
+ }
88
+ if (nameLower.startsWith('wl') || nameLower.includes('wifi') || nameLower.includes('wlan')) {
89
+ return 'WiFi';
90
+ }
91
+ if (nameLower.startsWith('virbr')) {
92
+ return 'Virtual Bridge';
93
+ }
94
+ return 'Network';
95
+ }
96
+ /**
97
+ * Prompt user to select IP addresses for server hostname routing
98
+ * Returns selected IPs as comma-separated string, or null if cancelled
99
+ */
100
+ export async function selectHostIPs() {
101
+ const interfaces = getNetworkInterfaces();
102
+ // Filter out Docker/container interfaces by default
103
+ const relevantInterfaces = interfaces.filter(iface => {
104
+ const name = iface.name.toLowerCase();
105
+ return !name.includes('docker') &&
106
+ !name.startsWith('br-') &&
107
+ !name.includes('veth') &&
108
+ !name.startsWith('virbr');
109
+ });
110
+ if (relevantInterfaces.length === 0) {
111
+ // No interfaces found, prompt for manual input
112
+ const manualInput = await text({
113
+ message: 'No network interfaces detected. Enter IP address manually:',
114
+ placeholder: '192.168.1.100',
115
+ validate: (value) => {
116
+ if (!value)
117
+ return 'IP address is required';
118
+ // Basic IPv4 validation
119
+ const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
120
+ if (!ipv4Regex.test(value))
121
+ return 'Invalid IPv4 address format';
122
+ return undefined;
123
+ },
124
+ });
125
+ if (isCancel(manualInput)) {
126
+ return null;
127
+ }
128
+ return manualInput;
129
+ }
130
+ // Build options for multiselect
131
+ const options = relevantInterfaces.map(iface => {
132
+ const type = detectInterfaceType(iface);
133
+ const isVPN = type.includes('VPN');
134
+ const isMain = type === 'Ethernet' || type === 'WiFi';
135
+ return {
136
+ value: iface.address,
137
+ label: `${iface.address}`,
138
+ hint: `${iface.name} (${type})${isMain ? ' - recommended' : ''}${isVPN ? colors.cyan(' VPN') : ''}`,
139
+ };
140
+ });
141
+ // Add manual input option
142
+ options.push({
143
+ value: '__manual__',
144
+ label: 'Enter manually...',
145
+ hint: 'Type an IP address not listed above',
146
+ });
147
+ console.log('');
148
+ console.log(colors.dim(' Select one or more IPs for server hostname routing.'));
149
+ console.log(colors.dim(' Each IP will generate a nip.io hostname (e.g., server.IP.nip.io)'));
150
+ console.log('');
151
+ const selected = await multiselect({
152
+ message: 'Select host IP address(es):',
153
+ options,
154
+ required: true,
155
+ });
156
+ if (isCancel(selected)) {
157
+ return null;
158
+ }
159
+ const selectedIPs = selected;
160
+ // Handle manual input if selected
161
+ if (selectedIPs.includes('__manual__')) {
162
+ const manualInput = await text({
163
+ message: 'Enter additional IP address:',
164
+ placeholder: '100.64.0.5',
165
+ validate: (value) => {
166
+ if (!value)
167
+ return 'IP address is required';
168
+ const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
169
+ if (!ipv4Regex.test(value))
170
+ return 'Invalid IPv4 address format';
171
+ return undefined;
172
+ },
173
+ });
174
+ if (isCancel(manualInput)) {
175
+ return null;
176
+ }
177
+ // Replace __manual__ with actual IP
178
+ const idx = selectedIPs.indexOf('__manual__');
179
+ selectedIPs[idx] = manualInput;
180
+ }
181
+ // Remove duplicates and return
182
+ const uniqueIPs = [...new Set(selectedIPs)];
183
+ return uniqueIPs.join(',');
184
+ }
185
+ /**
186
+ * Prompt for single IP selection (simpler version)
187
+ */
188
+ export async function selectSingleIP() {
189
+ const interfaces = getNetworkInterfaces();
190
+ const relevantInterfaces = interfaces.filter(iface => {
191
+ const name = iface.name.toLowerCase();
192
+ return !name.includes('docker') &&
193
+ !name.startsWith('br-') &&
194
+ !name.includes('veth') &&
195
+ !name.startsWith('virbr');
196
+ });
197
+ if (relevantInterfaces.length === 0) {
198
+ const manualInput = await text({
199
+ message: 'Enter host IP address:',
200
+ placeholder: '192.168.1.100',
201
+ validate: (value) => {
202
+ if (!value)
203
+ return 'IP address is required';
204
+ const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
205
+ if (!ipv4Regex.test(value))
206
+ return 'Invalid IPv4 address format';
207
+ return undefined;
208
+ },
209
+ });
210
+ if (isCancel(manualInput)) {
211
+ return null;
212
+ }
213
+ return manualInput;
214
+ }
215
+ const options = relevantInterfaces.map(iface => {
216
+ const type = detectInterfaceType(iface);
217
+ return {
218
+ value: iface.address,
219
+ label: `${iface.address}`,
220
+ hint: `${iface.name} (${type})`,
221
+ };
222
+ });
223
+ options.push({
224
+ value: '__manual__',
225
+ label: 'Enter manually...',
226
+ hint: 'Type an IP address',
227
+ });
228
+ const selected = await select({
229
+ message: 'Select host IP address:',
230
+ options,
231
+ });
232
+ if (isCancel(selected)) {
233
+ return null;
234
+ }
235
+ if (selected === '__manual__') {
236
+ const manualInput = await text({
237
+ message: 'Enter IP address:',
238
+ placeholder: '192.168.1.100',
239
+ validate: (value) => {
240
+ if (!value)
241
+ return 'IP address is required';
242
+ const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
243
+ if (!ipv4Regex.test(value))
244
+ return 'Invalid IPv4 address format';
245
+ return undefined;
246
+ },
247
+ });
248
+ if (isCancel(manualInput)) {
249
+ return null;
250
+ }
251
+ return manualInput;
252
+ }
253
+ return selected;
254
+ }
255
+ //# sourceMappingURL=ip-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip-select.js","sourceRoot":"","sources":["../../../src/lib/prompts/ip-select.ts"],"names":[],"mappings":"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"}
@@ -87,10 +87,12 @@ export declare class ShellExecutor {
87
87
  down(): Promise<number>;
88
88
  /**
89
89
  * Start all Minecraft servers (not router)
90
+ * Uses docker compose up to create containers if they don't exist
90
91
  */
91
92
  startAll(): Promise<number>;
92
93
  /**
93
94
  * Stop all Minecraft servers (not router)
95
+ * Uses docker compose stop for consistency
94
96
  */
95
97
  stopAll(): Promise<number>;
96
98
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAA0C,MAAM,0BAA0B,CAAC;AAEzF,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;gBAE3B,cAAc,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAczD,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3E;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;OAEG;IACG,YAAY,CAAC,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKrC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IA0BzD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAiCrE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlE;;OAEG;IACG,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBhC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAA0C,MAAM,0BAA0B,CAAC;AAEzF,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAyB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;gBAE3B,cAAc,CAAC,EAAE,KAAK,GAAG,oBAAoB;IAczD,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQhE;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAO3E;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5C;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;OAEG;IACG,YAAY,CAAC,OAAO,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpD;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKrC;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IA0BzD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAiCrE;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlE;;OAEG;IACG,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAkB7B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBjC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBhC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAKnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC"}
package/dist/lib/shell.js CHANGED
@@ -249,13 +249,15 @@ export class ShellExecutor {
249
249
  }
250
250
  /**
251
251
  * Start all Minecraft servers (not router)
252
+ * Uses docker compose up to create containers if they don't exist
252
253
  */
253
254
  async startAll() {
254
255
  log.info('Starting all Minecraft servers...');
255
- // Start all mc-* containers except mc-router
256
+ // Get all mc-* services from compose config and start them
257
+ // This works even if containers haven't been created yet
256
258
  return new Promise((resolve) => {
257
259
  const child = spawn('sh', ['-c',
258
- 'docker ps -a --filter "name=mc-" --filter "status=exited" --format "{{.Names}}" | grep -v mc-router | xargs -r docker start'
260
+ 'docker compose config --services | grep "^mc-" | xargs -r docker compose up -d'
259
261
  ], {
260
262
  cwd: this.paths.root,
261
263
  stdio: 'inherit',
@@ -272,13 +274,14 @@ export class ShellExecutor {
272
274
  }
273
275
  /**
274
276
  * Stop all Minecraft servers (not router)
277
+ * Uses docker compose stop for consistency
275
278
  */
276
279
  async stopAll() {
277
280
  log.info('Stopping all Minecraft servers...');
278
- // Stop all mc-* containers except mc-router
281
+ // Get all mc-* services from compose config and stop them
279
282
  return new Promise((resolve) => {
280
283
  const child = spawn('sh', ['-c',
281
- 'docker ps --filter "name=mc-" --format "{{.Names}}" | grep -v mc-router | xargs -r docker stop'
284
+ 'docker compose config --services | grep "^mc-" | xargs -r docker compose stop'
282
285
  ], {
283
286
  cwd: this.paths.root,
284
287
  stdio: 'inherit',
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/lib/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Check if avahi-daemon is installed and configured
3
+ */
4
+ export declare function isAvahiInstalled(): boolean;
5
+ /**
6
+ * Check if sudo password is available (from env or provided)
7
+ */
8
+ export declare function hasSudoPassword(sudoPassword?: string): boolean;
9
+ /**
10
+ * Prompt for sudo password if avahi is installed and password not provided
11
+ * Returns the password (from prompt, option, or env) or undefined if not needed
12
+ */
13
+ export declare function promptSudoPasswordIfNeeded(sudoPassword?: string): Promise<string | undefined>;
14
+ //# sourceMappingURL=sudo-utils.d.ts.map