@minecraft-docker/mcctl 1.6.0 → 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.
- package/dist/application/index.d.ts +2 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +5 -0
- package/dist/application/index.js.map +1 -0
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +182 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/ban.d.ts +14 -0
- package/dist/commands/ban.d.ts.map +1 -0
- package/dist/commands/ban.js +418 -0
- package/dist/commands/ban.js.map +1 -0
- package/dist/commands/config.d.ts +18 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +106 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/console/api.d.ts +19 -0
- package/dist/commands/console/api.d.ts.map +1 -0
- package/dist/commands/console/api.js +399 -0
- package/dist/commands/console/api.js.map +1 -0
- package/dist/commands/console/index.d.ts +10 -0
- package/dist/commands/console/index.d.ts.map +1 -0
- package/dist/commands/console/index.js +12 -0
- package/dist/commands/console/index.js.map +1 -0
- package/dist/commands/console/init.d.ts +47 -0
- package/dist/commands/console/init.d.ts.map +1 -0
- package/dist/commands/console/init.js +491 -0
- package/dist/commands/console/init.js.map +1 -0
- package/dist/commands/console/remove.d.ts +25 -0
- package/dist/commands/console/remove.d.ts.map +1 -0
- package/dist/commands/console/remove.js +189 -0
- package/dist/commands/console/remove.js.map +1 -0
- package/dist/commands/console/service.d.ts +40 -0
- package/dist/commands/console/service.d.ts.map +1 -0
- package/dist/commands/console/service.js +321 -0
- package/dist/commands/console/service.js.map +1 -0
- package/dist/commands/console/user.d.ts +17 -0
- package/dist/commands/console/user.d.ts.map +1 -0
- package/dist/commands/console/user.js +431 -0
- package/dist/commands/console/user.js.map +1 -0
- package/dist/commands/create.d.ts +22 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +86 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +17 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +74 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/exec.d.ts +10 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +29 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/index.d.ts +21 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +218 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kick.d.ts +12 -0
- package/dist/commands/kick.d.ts.map +1 -0
- package/dist/commands/kick.js +71 -0
- package/dist/commands/kick.js.map +1 -0
- package/dist/commands/migrate.d.ts +18 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +470 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/mod.d.ts +19 -0
- package/dist/commands/mod.d.ts.map +1 -0
- package/dist/commands/mod.js +441 -0
- package/dist/commands/mod.js.map +1 -0
- package/dist/commands/msg.d.ts +12 -0
- package/dist/commands/msg.d.ts.map +1 -0
- package/dist/commands/msg.js +273 -0
- package/dist/commands/msg.js.map +1 -0
- package/dist/commands/op.d.ts +12 -0
- package/dist/commands/op.d.ts.map +1 -0
- package/dist/commands/op.js +220 -0
- package/dist/commands/op.js.map +1 -0
- package/dist/commands/player-online.d.ts +11 -0
- package/dist/commands/player-online.d.ts.map +1 -0
- package/dist/commands/player-online.js +153 -0
- package/dist/commands/player-online.js.map +1 -0
- package/dist/commands/player.d.ts +18 -0
- package/dist/commands/player.d.ts.map +1 -0
- package/dist/commands/player.js +352 -0
- package/dist/commands/player.js.map +1 -0
- package/dist/commands/server-backup.d.ts +36 -0
- package/dist/commands/server-backup.d.ts.map +1 -0
- package/dist/commands/server-backup.js +320 -0
- package/dist/commands/server-backup.js.map +1 -0
- package/dist/commands/server-restore.d.ts +13 -0
- package/dist/commands/server-restore.d.ts.map +1 -0
- package/dist/commands/server-restore.js +294 -0
- package/dist/commands/server-restore.js.map +1 -0
- package/dist/commands/status.d.ts +13 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +325 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/whitelist.d.ts +12 -0
- package/dist/commands/whitelist.d.ts.map +1 -0
- package/dist/commands/whitelist.js +316 -0
- package/dist/commands/whitelist.js.map +1 -0
- package/dist/commands/world.d.ts +18 -0
- package/dist/commands/world.d.ts.map +1 -0
- package/dist/commands/world.js +238 -0
- package/dist/commands/world.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +766 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +30 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js +430 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/index.d.ts +4 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -0
- package/dist/infrastructure/adapters/index.js +6 -0
- package/dist/infrastructure/adapters/index.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +47 -0
- package/dist/infrastructure/di/container.d.ts.map +1 -0
- package/dist/infrastructure/di/container.js +140 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/di/index.d.ts +2 -0
- package/dist/infrastructure/di/index.d.ts.map +1 -0
- package/dist/infrastructure/di/index.js +2 -0
- package/dist/infrastructure/di/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +8 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/lib/admin-config.d.ts +66 -0
- package/dist/lib/admin-config.d.ts.map +1 -0
- package/dist/lib/admin-config.js +130 -0
- package/dist/lib/admin-config.js.map +1 -0
- package/dist/lib/mojang-api.d.ts +51 -0
- package/dist/lib/mojang-api.d.ts.map +1 -0
- package/dist/lib/mojang-api.js +136 -0
- package/dist/lib/mojang-api.js.map +1 -0
- package/dist/lib/player-cache.d.ts +79 -0
- package/dist/lib/player-cache.d.ts.map +1 -0
- package/dist/lib/player-cache.js +302 -0
- package/dist/lib/player-cache.js.map +1 -0
- package/dist/lib/player-json.d.ts +69 -0
- package/dist/lib/player-json.d.ts.map +1 -0
- package/dist/lib/player-json.js +96 -0
- package/dist/lib/player-json.js.map +1 -0
- package/dist/lib/pm2-utils.d.ts +71 -0
- package/dist/lib/pm2-utils.d.ts.map +1 -0
- package/dist/lib/pm2-utils.js +155 -0
- package/dist/lib/pm2-utils.js.map +1 -0
- package/dist/lib/prompts/action-select.d.ts +23 -0
- package/dist/lib/prompts/action-select.d.ts.map +1 -0
- package/dist/lib/prompts/action-select.js +124 -0
- package/dist/lib/prompts/action-select.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +7 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +7 -0
- package/dist/lib/prompts/index.js.map +1 -0
- package/dist/lib/prompts/ip-select.d.ts +25 -0
- package/dist/lib/prompts/ip-select.d.ts.map +1 -0
- package/dist/lib/prompts/ip-select.js +255 -0
- package/dist/lib/prompts/ip-select.js.map +1 -0
- package/dist/lib/prompts/player-select.d.ts +25 -0
- package/dist/lib/prompts/player-select.d.ts.map +1 -0
- package/dist/lib/prompts/player-select.js +122 -0
- package/dist/lib/prompts/player-select.js.map +1 -0
- package/dist/lib/prompts/server-select.d.ts +26 -0
- package/dist/lib/prompts/server-select.d.ts.map +1 -0
- package/dist/lib/prompts/server-select.js +99 -0
- package/dist/lib/prompts/server-select.js.map +1 -0
- package/dist/lib/rcon.d.ts +53 -0
- package/dist/lib/rcon.d.ts.map +1 -0
- package/dist/lib/rcon.js +131 -0
- package/dist/lib/rcon.js.map +1 -0
- package/dist/lib/shell.d.ts +111 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +321 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/sudo-utils.d.ts +14 -0
- package/dist/lib/sudo-utils.d.ts.map +1 -0
- package/dist/lib/sudo-utils.js +53 -0
- package/dist/lib/sudo-utils.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Remove Command
|
|
3
|
+
*
|
|
4
|
+
* Completely removes Console Service:
|
|
5
|
+
* - Stop and remove PM2 processes
|
|
6
|
+
* - Delete configuration files (optional)
|
|
7
|
+
* - Delete ecosystem.config.cjs
|
|
8
|
+
*/
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { existsSync, unlinkSync } from 'node:fs';
|
|
11
|
+
import { Paths, log, colors } from '@minecraft-docker/shared';
|
|
12
|
+
import { getContainer } from '../../infrastructure/index.js';
|
|
13
|
+
import { AdminConfigManager } from '../../lib/admin-config.js';
|
|
14
|
+
import { Pm2ServiceManagerAdapter } from '../../infrastructure/adapters/Pm2ServiceManagerAdapter.js';
|
|
15
|
+
import { checkPm2Installation, ECOSYSTEM_CONFIG_FILE, PM2_SERVICE_NAMES, } from '../../lib/pm2-utils.js';
|
|
16
|
+
/**
|
|
17
|
+
* Check if console service is initialized
|
|
18
|
+
*/
|
|
19
|
+
function isConsoleInitialized(paths) {
|
|
20
|
+
const configManager = new AdminConfigManager(paths.root);
|
|
21
|
+
return configManager.isInitialized();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stop and remove PM2 processes
|
|
25
|
+
*/
|
|
26
|
+
async function stopAndRemoveProcesses(paths) {
|
|
27
|
+
const pm2Check = checkPm2Installation();
|
|
28
|
+
if (!pm2Check.installed) {
|
|
29
|
+
return { success: true, message: 'PM2 not installed', stopped: [] };
|
|
30
|
+
}
|
|
31
|
+
const pm2Adapter = new Pm2ServiceManagerAdapter(paths);
|
|
32
|
+
const stopped = [];
|
|
33
|
+
try {
|
|
34
|
+
for (const serviceName of [PM2_SERVICE_NAMES.API, PM2_SERVICE_NAMES.CONSOLE]) {
|
|
35
|
+
const exists = await pm2Adapter.exists(serviceName);
|
|
36
|
+
if (exists) {
|
|
37
|
+
await pm2Adapter.delete(serviceName);
|
|
38
|
+
stopped.push(serviceName);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Save process list after removal
|
|
42
|
+
if (stopped.length > 0) {
|
|
43
|
+
await pm2Adapter.save();
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
success: true,
|
|
47
|
+
message: stopped.length > 0
|
|
48
|
+
? `Stopped and removed: ${stopped.join(', ')}`
|
|
49
|
+
: 'No PM2 processes running',
|
|
50
|
+
stopped,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
message: `Failed to stop processes: ${error instanceof Error ? error.message : String(error)}`,
|
|
57
|
+
stopped,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
pm2Adapter.disconnect();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Delete configuration files
|
|
66
|
+
*/
|
|
67
|
+
function deleteConfigFiles(paths) {
|
|
68
|
+
const configManager = new AdminConfigManager(paths.root);
|
|
69
|
+
const filesToDelete = [
|
|
70
|
+
configManager.path, // .mcctl-admin.yml
|
|
71
|
+
join(paths.root, 'users.yaml'),
|
|
72
|
+
join(paths.platform, ECOSYSTEM_CONFIG_FILE), // ecosystem.config.cjs
|
|
73
|
+
];
|
|
74
|
+
const deleted = [];
|
|
75
|
+
const errors = [];
|
|
76
|
+
for (const file of filesToDelete) {
|
|
77
|
+
if (existsSync(file)) {
|
|
78
|
+
try {
|
|
79
|
+
unlinkSync(file);
|
|
80
|
+
deleted.push(file);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
errors.push(`Failed to delete ${file}: ${err instanceof Error ? err.message : String(err)}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return { deleted, errors };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Execute console remove command
|
|
91
|
+
*
|
|
92
|
+
* Removes all Console Service components:
|
|
93
|
+
* 1. Stop and remove PM2 processes
|
|
94
|
+
* 2. Delete configuration files (unless --keep-config)
|
|
95
|
+
*/
|
|
96
|
+
export async function consoleRemoveCommand(options) {
|
|
97
|
+
const paths = new Paths(options.root);
|
|
98
|
+
// Check if platform is initialized
|
|
99
|
+
if (!paths.isInitialized()) {
|
|
100
|
+
log.error('Platform not initialized. Nothing to remove.');
|
|
101
|
+
return 1;
|
|
102
|
+
}
|
|
103
|
+
// Check if console service is initialized
|
|
104
|
+
if (!isConsoleInitialized(paths)) {
|
|
105
|
+
log.warn('Console Service is not initialized. Nothing to remove.');
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
const container = getContainer({ rootDir: options.root });
|
|
109
|
+
const prompt = container.promptPort;
|
|
110
|
+
// Confirm removal unless --force
|
|
111
|
+
if (!options.force) {
|
|
112
|
+
try {
|
|
113
|
+
console.log('');
|
|
114
|
+
console.log(colors.yellow(' This will remove:'));
|
|
115
|
+
console.log(' - PM2 processes (mcctl-api, mcctl-console)');
|
|
116
|
+
if (!options.keepConfig) {
|
|
117
|
+
console.log(' - Configuration files (.mcctl-admin.yml, users.yaml)');
|
|
118
|
+
console.log(' - PM2 ecosystem config (ecosystem.config.cjs)');
|
|
119
|
+
}
|
|
120
|
+
console.log('');
|
|
121
|
+
const shouldRemove = await prompt.confirm({
|
|
122
|
+
message: 'Are you sure you want to remove Console Service?',
|
|
123
|
+
initialValue: false,
|
|
124
|
+
});
|
|
125
|
+
if (prompt.isCancel(shouldRemove) || !shouldRemove) {
|
|
126
|
+
log.info('Cancelled');
|
|
127
|
+
return 0;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (prompt.isCancel(error)) {
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
throw error;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const spinner = prompt.spinner();
|
|
138
|
+
try {
|
|
139
|
+
// Step 1: Stop and remove PM2 processes
|
|
140
|
+
spinner.start('Stopping and removing PM2 processes...');
|
|
141
|
+
const processResult = await stopAndRemoveProcesses(paths);
|
|
142
|
+
spinner.stop(processResult.message);
|
|
143
|
+
if (!processResult.success) {
|
|
144
|
+
log.warn(processResult.message);
|
|
145
|
+
}
|
|
146
|
+
// Step 2: Delete configuration files (unless --keep-config)
|
|
147
|
+
if (!options.keepConfig) {
|
|
148
|
+
spinner.start('Removing configuration files...');
|
|
149
|
+
const configResult = deleteConfigFiles(paths);
|
|
150
|
+
if (configResult.deleted.length > 0) {
|
|
151
|
+
spinner.stop(`Removed ${configResult.deleted.length} configuration file(s)`);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
spinner.stop('No configuration files to remove');
|
|
155
|
+
}
|
|
156
|
+
if (configResult.errors.length > 0) {
|
|
157
|
+
for (const error of configResult.errors) {
|
|
158
|
+
log.warn(error);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
log.info('Keeping configuration files (--keep-config)');
|
|
164
|
+
}
|
|
165
|
+
// Summary
|
|
166
|
+
console.log('');
|
|
167
|
+
prompt.success('Console Service removed successfully');
|
|
168
|
+
console.log('');
|
|
169
|
+
if (options.keepConfig) {
|
|
170
|
+
console.log(colors.dim(' Note: Configuration files were kept as requested'));
|
|
171
|
+
console.log(colors.dim(' - .mcctl-admin.yml'));
|
|
172
|
+
console.log(colors.dim(' - users.yaml'));
|
|
173
|
+
console.log(colors.dim(' - ecosystem.config.cjs'));
|
|
174
|
+
console.log('');
|
|
175
|
+
}
|
|
176
|
+
console.log(colors.dim(' To reinstall, run: mcctl console init'));
|
|
177
|
+
console.log('');
|
|
178
|
+
return 0;
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (prompt.isCancel(error)) {
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
185
|
+
log.error(message);
|
|
186
|
+
return 1;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/console/remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Service Management Command
|
|
3
|
+
*
|
|
4
|
+
* Manages Console Service (mcctl-api + mcctl-console) lifecycle via PM2:
|
|
5
|
+
* - start: Start API + Console processes
|
|
6
|
+
* - stop: Stop services
|
|
7
|
+
* - restart: Restart services
|
|
8
|
+
* - status: Show status with health checks
|
|
9
|
+
* - logs: View logs with follow mode
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Console service command options
|
|
13
|
+
*/
|
|
14
|
+
export interface ConsoleServiceOptions {
|
|
15
|
+
root?: string;
|
|
16
|
+
subCommand?: 'start' | 'stop' | 'restart' | 'status' | 'logs';
|
|
17
|
+
apiOnly?: boolean;
|
|
18
|
+
consoleOnly?: boolean;
|
|
19
|
+
follow?: boolean;
|
|
20
|
+
json?: boolean;
|
|
21
|
+
apiPort?: number;
|
|
22
|
+
consolePort?: number;
|
|
23
|
+
build?: boolean;
|
|
24
|
+
noBuild?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export type AdminServiceOptions = ConsoleServiceOptions;
|
|
27
|
+
/**
|
|
28
|
+
* Delete admin images (legacy, now removes PM2 processes)
|
|
29
|
+
*/
|
|
30
|
+
export declare function deleteAdminImages(): {
|
|
31
|
+
success: boolean;
|
|
32
|
+
deleted: string[];
|
|
33
|
+
errors: string[];
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Console service command
|
|
37
|
+
*/
|
|
38
|
+
export declare function consoleServiceCommand(options: ConsoleServiceOptions): Promise<number>;
|
|
39
|
+
export declare const adminServiceCommand: typeof consoleServiceCommand;
|
|
40
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/console/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AA2TxD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAQ7F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgD3F;AAGD,eAAO,MAAM,mBAAmB,8BAAwB,CAAC"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Service Management Command
|
|
3
|
+
*
|
|
4
|
+
* Manages Console Service (mcctl-api + mcctl-console) lifecycle via PM2:
|
|
5
|
+
* - start: Start API + Console processes
|
|
6
|
+
* - stop: Stop services
|
|
7
|
+
* - restart: Restart services
|
|
8
|
+
* - status: Show status with health checks
|
|
9
|
+
* - logs: View logs with follow mode
|
|
10
|
+
*/
|
|
11
|
+
import { Paths, colors, log, ServiceStatusEnum } from '@minecraft-docker/shared';
|
|
12
|
+
import { spawn } from 'node:child_process';
|
|
13
|
+
import { Pm2ServiceManagerAdapter } from '../../infrastructure/adapters/Pm2ServiceManagerAdapter.js';
|
|
14
|
+
import { checkPm2Installation, ecosystemConfigExists, PM2_SERVICE_NAMES, } from '../../lib/pm2-utils.js';
|
|
15
|
+
const API_PORT_DEFAULT = 3001;
|
|
16
|
+
const CONSOLE_PORT_DEFAULT = 3000;
|
|
17
|
+
/**
|
|
18
|
+
* Check PM2 is installed
|
|
19
|
+
*/
|
|
20
|
+
function ensurePm2Installed() {
|
|
21
|
+
const pm2Check = checkPm2Installation();
|
|
22
|
+
if (!pm2Check.installed) {
|
|
23
|
+
log.error('PM2 is not installed.');
|
|
24
|
+
log.info('Install PM2 globally with: npm install -g pm2');
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get service names based on options
|
|
31
|
+
*/
|
|
32
|
+
function getServiceNames(options) {
|
|
33
|
+
if (options.apiOnly) {
|
|
34
|
+
return [PM2_SERVICE_NAMES.API];
|
|
35
|
+
}
|
|
36
|
+
if (options.consoleOnly) {
|
|
37
|
+
return [PM2_SERVICE_NAMES.CONSOLE];
|
|
38
|
+
}
|
|
39
|
+
return [PM2_SERVICE_NAMES.API, PM2_SERVICE_NAMES.CONSOLE];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Convert ProcessInfo to ServiceInfo
|
|
43
|
+
*/
|
|
44
|
+
function toServiceInfo(process, port) {
|
|
45
|
+
const info = {
|
|
46
|
+
name: process.name,
|
|
47
|
+
status: process.statusValue,
|
|
48
|
+
pid: process.pid,
|
|
49
|
+
cpu: process.cpu,
|
|
50
|
+
memory: process.memoryFormatted,
|
|
51
|
+
uptime: process.uptimeFormatted,
|
|
52
|
+
restarts: process.restarts,
|
|
53
|
+
};
|
|
54
|
+
if (process.name === PM2_SERVICE_NAMES.CONSOLE && process.isOnline && port) {
|
|
55
|
+
info.url = `http://localhost:${port}`;
|
|
56
|
+
}
|
|
57
|
+
return info;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get console service status via PM2
|
|
61
|
+
*/
|
|
62
|
+
async function getConsoleServiceStatus(pm2Adapter, apiPort, consolePort) {
|
|
63
|
+
try {
|
|
64
|
+
const processes = await pm2Adapter.status();
|
|
65
|
+
const apiProcess = processes.find((p) => p.name === PM2_SERVICE_NAMES.API);
|
|
66
|
+
const consoleProcess = processes.find((p) => p.name === PM2_SERVICE_NAMES.CONSOLE);
|
|
67
|
+
const api = apiProcess ? toServiceInfo(apiProcess, apiPort ?? API_PORT_DEFAULT) : null;
|
|
68
|
+
const consoleInfo = consoleProcess
|
|
69
|
+
? toServiceInfo(consoleProcess, consolePort ?? CONSOLE_PORT_DEFAULT)
|
|
70
|
+
: null;
|
|
71
|
+
const healthy = api?.status === ServiceStatusEnum.ONLINE &&
|
|
72
|
+
consoleInfo?.status === ServiceStatusEnum.ONLINE;
|
|
73
|
+
return { api, console: consoleInfo, healthy };
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return { api: null, console: null, healthy: false };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format status output
|
|
81
|
+
*/
|
|
82
|
+
function formatStatus(status, json) {
|
|
83
|
+
if (json) {
|
|
84
|
+
console.log(JSON.stringify(status, null, 2));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log('');
|
|
88
|
+
console.log(colors.bold(' Console Service Status (PM2)'));
|
|
89
|
+
console.log('');
|
|
90
|
+
// API Status
|
|
91
|
+
if (status.api) {
|
|
92
|
+
const statusColor = status.api.status === ServiceStatusEnum.ONLINE ? colors.green : colors.red;
|
|
93
|
+
console.log(` ${colors.cyan('mcctl-api')}`);
|
|
94
|
+
console.log(` Status: ${statusColor(status.api.status)}`);
|
|
95
|
+
if (status.api.pid)
|
|
96
|
+
console.log(` PID: ${status.api.pid}`);
|
|
97
|
+
if (status.api.cpu !== undefined)
|
|
98
|
+
console.log(` CPU: ${status.api.cpu}%`);
|
|
99
|
+
if (status.api.memory)
|
|
100
|
+
console.log(` Memory: ${status.api.memory}`);
|
|
101
|
+
if (status.api.uptime)
|
|
102
|
+
console.log(` Uptime: ${status.api.uptime}`);
|
|
103
|
+
if (status.api.restarts !== undefined)
|
|
104
|
+
console.log(` Restarts: ${status.api.restarts}`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.log(` ${colors.cyan('mcctl-api')}`);
|
|
108
|
+
console.log(` Status: ${colors.yellow('not running')}`);
|
|
109
|
+
}
|
|
110
|
+
console.log('');
|
|
111
|
+
// Console Status
|
|
112
|
+
if (status.console) {
|
|
113
|
+
const statusColor = status.console.status === ServiceStatusEnum.ONLINE ? colors.green : colors.red;
|
|
114
|
+
console.log(` ${colors.cyan('mcctl-console')}`);
|
|
115
|
+
console.log(` Status: ${statusColor(status.console.status)}`);
|
|
116
|
+
if (status.console.pid)
|
|
117
|
+
console.log(` PID: ${status.console.pid}`);
|
|
118
|
+
if (status.console.url && status.console.status === ServiceStatusEnum.ONLINE) {
|
|
119
|
+
console.log(` URL: ${colors.cyan(status.console.url)}`);
|
|
120
|
+
}
|
|
121
|
+
if (status.console.cpu !== undefined)
|
|
122
|
+
console.log(` CPU: ${status.console.cpu}%`);
|
|
123
|
+
if (status.console.memory)
|
|
124
|
+
console.log(` Memory: ${status.console.memory}`);
|
|
125
|
+
if (status.console.uptime)
|
|
126
|
+
console.log(` Uptime: ${status.console.uptime}`);
|
|
127
|
+
if (status.console.restarts !== undefined)
|
|
128
|
+
console.log(` Restarts: ${status.console.restarts}`);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(` ${colors.cyan('mcctl-console')}`);
|
|
132
|
+
console.log(` Status: ${colors.yellow('not running')}`);
|
|
133
|
+
}
|
|
134
|
+
console.log('');
|
|
135
|
+
// Summary
|
|
136
|
+
if (status.healthy) {
|
|
137
|
+
console.log(` ${colors.green('All services healthy')}`);
|
|
138
|
+
}
|
|
139
|
+
else if (!status.api && !status.console) {
|
|
140
|
+
console.log(` ${colors.yellow('Services not running')}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.log(` ${colors.yellow('Some services need attention')}`);
|
|
144
|
+
}
|
|
145
|
+
console.log('');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Start console services
|
|
149
|
+
*/
|
|
150
|
+
async function startServices(paths, pm2Adapter, options) {
|
|
151
|
+
if (!ecosystemConfigExists(paths)) {
|
|
152
|
+
log.error('Ecosystem config not found.');
|
|
153
|
+
log.info("Please run 'mcctl console init' to initialize console services");
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
156
|
+
const services = getServiceNames(options);
|
|
157
|
+
const apiPort = options.apiPort ?? API_PORT_DEFAULT;
|
|
158
|
+
const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
|
|
159
|
+
log.info('Starting console services via PM2...');
|
|
160
|
+
if (options.apiPort || options.consolePort) {
|
|
161
|
+
log.info(` API port: ${apiPort}, Console port: ${consolePort}`);
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
for (const service of services) {
|
|
165
|
+
await pm2Adapter.start(service, { wait: true, waitTimeout: 30000 });
|
|
166
|
+
log.info(` Started ${service}`);
|
|
167
|
+
}
|
|
168
|
+
// Save process list for resurrect on reboot
|
|
169
|
+
await pm2Adapter.save();
|
|
170
|
+
log.info('Console services started successfully');
|
|
171
|
+
// Show status after starting
|
|
172
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
173
|
+
const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
|
|
174
|
+
formatStatus(status, false);
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
log.error(`Failed to start services: ${error instanceof Error ? error.message : error}`);
|
|
179
|
+
return 1;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Stop console services
|
|
184
|
+
*/
|
|
185
|
+
async function stopServices(paths, pm2Adapter, options) {
|
|
186
|
+
const services = getServiceNames(options);
|
|
187
|
+
log.info('Stopping console services...');
|
|
188
|
+
try {
|
|
189
|
+
for (const service of services) {
|
|
190
|
+
await pm2Adapter.stop(service);
|
|
191
|
+
log.info(` Stopped ${service}`);
|
|
192
|
+
}
|
|
193
|
+
log.info('Console services stopped');
|
|
194
|
+
return 0;
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
log.error(`Failed to stop services: ${error instanceof Error ? error.message : error}`);
|
|
198
|
+
return 1;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Restart console services
|
|
203
|
+
*/
|
|
204
|
+
async function restartServices(paths, pm2Adapter, options) {
|
|
205
|
+
const services = getServiceNames(options);
|
|
206
|
+
const apiPort = options.apiPort ?? API_PORT_DEFAULT;
|
|
207
|
+
const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
|
|
208
|
+
log.info('Restarting console services...');
|
|
209
|
+
if (options.apiPort || options.consolePort) {
|
|
210
|
+
log.info(` API port: ${apiPort}, Console port: ${consolePort}`);
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
for (const service of services) {
|
|
214
|
+
await pm2Adapter.restart(service, { wait: true, waitTimeout: 30000 });
|
|
215
|
+
log.info(` Restarted ${service}`);
|
|
216
|
+
}
|
|
217
|
+
log.info('Console services restarted');
|
|
218
|
+
// Show status after restarting
|
|
219
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
220
|
+
const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
|
|
221
|
+
formatStatus(status, false);
|
|
222
|
+
return 0;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
log.error(`Failed to restart services: ${error instanceof Error ? error.message : error}`);
|
|
226
|
+
return 1;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Show console service logs via PM2
|
|
231
|
+
*/
|
|
232
|
+
async function showLogs(paths, pm2Adapter, options) {
|
|
233
|
+
const services = getServiceNames(options);
|
|
234
|
+
if (options.follow) {
|
|
235
|
+
// Use pm2 logs command for follow mode
|
|
236
|
+
return new Promise((resolve) => {
|
|
237
|
+
const args = ['logs', ...services];
|
|
238
|
+
const proc = spawn('pm2', args, {
|
|
239
|
+
stdio: 'inherit',
|
|
240
|
+
});
|
|
241
|
+
proc.on('close', (code) => {
|
|
242
|
+
resolve(code ?? 0);
|
|
243
|
+
});
|
|
244
|
+
// Handle Ctrl+C gracefully
|
|
245
|
+
process.on('SIGINT', () => {
|
|
246
|
+
proc.kill('SIGINT');
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
// Non-follow mode: read from adapter
|
|
251
|
+
try {
|
|
252
|
+
for (const service of services) {
|
|
253
|
+
console.log(colors.bold(`\n=== ${service} logs ===\n`));
|
|
254
|
+
const logContent = await pm2Adapter.logs(service, { lines: 100 });
|
|
255
|
+
console.log(logContent || 'No logs available');
|
|
256
|
+
}
|
|
257
|
+
return 0;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
log.error(`Failed to get logs: ${error instanceof Error ? error.message : error}`);
|
|
261
|
+
return 1;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Delete admin images (legacy, now removes PM2 processes)
|
|
266
|
+
*/
|
|
267
|
+
export function deleteAdminImages() {
|
|
268
|
+
// This function is kept for backward compatibility
|
|
269
|
+
// In PM2 mode, we delete processes instead of images
|
|
270
|
+
return {
|
|
271
|
+
success: true,
|
|
272
|
+
deleted: [],
|
|
273
|
+
errors: [],
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Console service command
|
|
278
|
+
*/
|
|
279
|
+
export async function consoleServiceCommand(options) {
|
|
280
|
+
// Check PM2 is installed
|
|
281
|
+
if (!ensurePm2Installed()) {
|
|
282
|
+
return 1;
|
|
283
|
+
}
|
|
284
|
+
const paths = new Paths(options.root);
|
|
285
|
+
// Check if platform is initialized
|
|
286
|
+
if (!paths.isInitialized()) {
|
|
287
|
+
log.error('Platform not initialized. Run: mcctl init');
|
|
288
|
+
return 1;
|
|
289
|
+
}
|
|
290
|
+
const pm2Adapter = new Pm2ServiceManagerAdapter(paths);
|
|
291
|
+
try {
|
|
292
|
+
const apiPort = options.apiPort ?? API_PORT_DEFAULT;
|
|
293
|
+
const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
|
|
294
|
+
switch (options.subCommand) {
|
|
295
|
+
case 'start':
|
|
296
|
+
return await startServices(paths, pm2Adapter, options);
|
|
297
|
+
case 'stop':
|
|
298
|
+
return await stopServices(paths, pm2Adapter, options);
|
|
299
|
+
case 'restart':
|
|
300
|
+
return await restartServices(paths, pm2Adapter, options);
|
|
301
|
+
case 'status': {
|
|
302
|
+
const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
|
|
303
|
+
formatStatus(status, options.json ?? false);
|
|
304
|
+
return status.healthy || (!status.api && !status.console) ? 0 : 1;
|
|
305
|
+
}
|
|
306
|
+
case 'logs':
|
|
307
|
+
return await showLogs(paths, pm2Adapter, options);
|
|
308
|
+
default:
|
|
309
|
+
// Default: show status
|
|
310
|
+
const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
|
|
311
|
+
formatStatus(status, options.json ?? false);
|
|
312
|
+
return 0;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
finally {
|
|
316
|
+
pm2Adapter.disconnect();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// Backward compatibility alias
|
|
320
|
+
export const adminServiceCommand = consoleServiceCommand;
|
|
321
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/commands/console/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAe,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC9F,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2DAA2D,CAAC;AACrG,OAAO,EACL,oBAAoB,EAEpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAsChC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;IAExC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAA8B;IACrD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAoB,EAAE,IAAa;IACxD,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,eAAe;QAC/B,MAAM,EAAE,OAAO,CAAC,eAAe;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC3E,IAAI,CAAC,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,UAAoC,EACpC,OAAgB,EAChB,WAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;QAE5C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEnF,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,MAAM,WAAW,GAAG,cAAc;YAChC,CAAC,CAAC,aAAa,CAAC,cAAc,EAAE,WAAW,IAAI,oBAAoB,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,OAAO,GACX,GAAG,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM;YACxC,WAAW,EAAE,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAAC;QAEnD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAA4B,EAAE,IAAa;IAC/D,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,aAAa;IACb,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,WAAW,GACf,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,iBAAiB;IACjB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,WAAW,GACf,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;YACvC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,UAAU;IACV,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,KAAY,EACZ,UAAoC,EACpC,OAA8B;IAE9B,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAEhE,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,eAAe,OAAO,mBAAmB,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACpE,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAExB,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAElD,6BAA6B;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE5B,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,KAAY,EACZ,UAAoC,EACpC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE1C,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,KAAY,EACZ,UAAoC,EACpC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAEhE,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,eAAe,OAAO,mBAAmB,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAEvC,+BAA+B;QAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/E,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE5B,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3F,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,QAAQ,CACrB,KAAY,EACZ,UAAoC,EACpC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,uCAAuC;QACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;YAEnC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;gBAC9B,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,2BAA2B;YAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,aAAa,CAAC,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,mBAAmB,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,mDAAmD;IACnD,qDAAqD;IACrD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAA8B;IACxE,yBAAyB;IACzB,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,mCAAmC;IACnC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACpD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;QAEhE,QAAQ,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,OAAO;gBACV,OAAO,MAAM,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAEzD,KAAK,MAAM;gBACT,OAAO,MAAM,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAExD,KAAK,SAAS;gBACZ,OAAO,MAAM,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAE3D,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC/E,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;gBAC5C,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC;YAED,KAAK,MAAM;gBACT,OAAO,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAEpD;gBACE,uBAAuB;gBACvB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC/E,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Console user command options
|
|
4
|
+
*/
|
|
5
|
+
export interface ConsoleUserCommandOptions {
|
|
6
|
+
json?: boolean;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
role?: string;
|
|
9
|
+
password?: string;
|
|
10
|
+
}
|
|
11
|
+
export type AdminUserCommandOptions = ConsoleUserCommandOptions;
|
|
12
|
+
/**
|
|
13
|
+
* Create console user command
|
|
14
|
+
*/
|
|
15
|
+
export declare function consoleUserCommand(): Command;
|
|
16
|
+
export declare const adminUserCommand: typeof consoleUserCommand;
|
|
17
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/console/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAoZhE;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA6F5C;AAGD,eAAO,MAAM,gBAAgB,2BAAqB,CAAC"}
|