@minecraft-docker/mcctl 2.15.3 → 2.17.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.
- package/CHANGELOG.md +39 -0
- package/README.md +15 -12
- package/dist/commands/config-snapshot/create.d.ts +11 -0
- package/dist/commands/config-snapshot/create.d.ts.map +1 -0
- package/dist/commands/config-snapshot/create.js +39 -0
- package/dist/commands/config-snapshot/create.js.map +1 -0
- package/dist/commands/config-snapshot/delete.d.ts +10 -0
- package/dist/commands/config-snapshot/delete.d.ts.map +1 -0
- package/dist/commands/config-snapshot/delete.js +43 -0
- package/dist/commands/config-snapshot/delete.js.map +1 -0
- package/dist/commands/config-snapshot/diff.d.ts +14 -0
- package/dist/commands/config-snapshot/diff.d.ts.map +1 -0
- package/dist/commands/config-snapshot/diff.js +157 -0
- package/dist/commands/config-snapshot/diff.js.map +1 -0
- package/dist/commands/config-snapshot/index.d.ts +8 -0
- package/dist/commands/config-snapshot/index.d.ts.map +1 -0
- package/dist/commands/config-snapshot/index.js +9 -0
- package/dist/commands/config-snapshot/index.js.map +1 -0
- package/dist/commands/config-snapshot/list.d.ts +12 -0
- package/dist/commands/config-snapshot/list.d.ts.map +1 -0
- package/dist/commands/config-snapshot/list.js +55 -0
- package/dist/commands/config-snapshot/list.js.map +1 -0
- package/dist/commands/config-snapshot/restore.d.ts +11 -0
- package/dist/commands/config-snapshot/restore.d.ts.map +1 -0
- package/dist/commands/config-snapshot/restore.js +55 -0
- package/dist/commands/config-snapshot/restore.js.map +1 -0
- package/dist/commands/config-snapshot/schedule/add.d.ts +13 -0
- package/dist/commands/config-snapshot/schedule/add.d.ts.map +1 -0
- package/dist/commands/config-snapshot/schedule/add.js +46 -0
- package/dist/commands/config-snapshot/schedule/add.js.map +1 -0
- package/dist/commands/config-snapshot/schedule/index.d.ts +5 -0
- package/dist/commands/config-snapshot/schedule/index.d.ts.map +1 -0
- package/dist/commands/config-snapshot/schedule/index.js +5 -0
- package/dist/commands/config-snapshot/schedule/index.js.map +1 -0
- package/dist/commands/config-snapshot/schedule/list.d.ts +10 -0
- package/dist/commands/config-snapshot/schedule/list.d.ts.map +1 -0
- package/dist/commands/config-snapshot/schedule/list.js +57 -0
- package/dist/commands/config-snapshot/schedule/list.js.map +1 -0
- package/dist/commands/config-snapshot/schedule/remove.d.ts +10 -0
- package/dist/commands/config-snapshot/schedule/remove.d.ts.map +1 -0
- package/dist/commands/config-snapshot/schedule/remove.js +38 -0
- package/dist/commands/config-snapshot/schedule/remove.js.map +1 -0
- package/dist/commands/config-snapshot/schedule/toggle.d.ts +10 -0
- package/dist/commands/config-snapshot/schedule/toggle.d.ts.map +1 -0
- package/dist/commands/config-snapshot/schedule/toggle.js +34 -0
- package/dist/commands/config-snapshot/schedule/toggle.js.map +1 -0
- package/dist/commands/config-snapshot/show.d.ts +11 -0
- package/dist/commands/config-snapshot/show.d.ts.map +1 -0
- package/dist/commands/config-snapshot/show.js +53 -0
- package/dist/commands/config-snapshot/show.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/index.js +145 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/di/container.d.ts +7 -1
- package/dist/infrastructure/di/container.d.ts.map +1 -1
- package/dist/infrastructure/di/container.js +30 -2
- package/dist/infrastructure/di/container.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { log, colors } from '@minecraft-docker/shared';
|
|
2
|
+
import { getContainer } from '../../../infrastructure/di/container.js';
|
|
3
|
+
/**
|
|
4
|
+
* Add a new config snapshot schedule
|
|
5
|
+
*/
|
|
6
|
+
export async function configSnapshotScheduleAddCommand(options) {
|
|
7
|
+
const container = getContainer(options.root);
|
|
8
|
+
const useCase = container.configSnapshotScheduleUseCase;
|
|
9
|
+
// Validate required fields
|
|
10
|
+
if (!options.serverName) {
|
|
11
|
+
log.error('--server is required. Usage: mcctl config-snapshot schedule add --server <name> --cron "..." --name "..."');
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
if (!options.cron) {
|
|
15
|
+
log.error('--cron is required. Example: --cron "0 3 * * *"');
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
if (!options.name) {
|
|
19
|
+
log.error('--name is required. Example: --name "Daily Snapshot"');
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
const retentionCount = options.retention ?? 10;
|
|
23
|
+
try {
|
|
24
|
+
const schedule = await useCase.create(options.serverName, options.name, options.cron, retentionCount);
|
|
25
|
+
if (options.json) {
|
|
26
|
+
console.log(JSON.stringify(schedule.toJSON(), null, 2));
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
console.log('');
|
|
30
|
+
console.log(colors.green('Config snapshot schedule created!'));
|
|
31
|
+
console.log(` Name: ${colors.bold(schedule.name)}`);
|
|
32
|
+
console.log(` Server: ${colors.bold(schedule.serverName.value)}`);
|
|
33
|
+
console.log(` Cron: ${colors.cyan(schedule.cronExpression.expression)}`);
|
|
34
|
+
console.log(` Schedule: ${schedule.cronExpression.toHumanReadable()}`);
|
|
35
|
+
console.log(` Retention: max ${colors.yellow(String(schedule.retentionCount))} snapshots`);
|
|
36
|
+
console.log(` ID: ${colors.dim(schedule.id)}`);
|
|
37
|
+
console.log('');
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
42
|
+
log.error(`Failed to create schedule: ${message}`);
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAWvE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,OAAyC;IAEzC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,6BAA6B,CAAC;IAExD,2BAA2B;IAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,GAAG,CAAC,KAAK,CACP,2GAA2G,CAC5G,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CACP,iDAAiD,CAClD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CACP,sDAAsD,CACvD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CACnC,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,IAAI,EACZ,cAAc,CACf,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CACT,gBAAgB,QAAQ,CAAC,cAAc,CAAC,eAAe,EAAE,EAAE,CAC5D,CAAC;QACF,OAAO,CAAC,GAAG,CACT,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,YAAY,CAC/E,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { configSnapshotScheduleListCommand, type ConfigSnapshotScheduleListOptions, } from './list.js';
|
|
2
|
+
export { configSnapshotScheduleAddCommand, type ConfigSnapshotScheduleAddOptions, } from './add.js';
|
|
3
|
+
export { configSnapshotScheduleRemoveCommand, type ConfigSnapshotScheduleRemoveOptions, } from './remove.js';
|
|
4
|
+
export { configSnapshotScheduleToggleCommand, type ConfigSnapshotScheduleToggleOptions, } from './toggle.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,KAAK,iCAAiC,GACvC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gCAAgC,EAChC,KAAK,gCAAgC,GACtC,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mCAAmC,EACnC,KAAK,mCAAmC,GACzC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mCAAmC,EACnC,KAAK,mCAAmC,GACzC,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { configSnapshotScheduleListCommand, } from './list.js';
|
|
2
|
+
export { configSnapshotScheduleAddCommand, } from './add.js';
|
|
3
|
+
export { configSnapshotScheduleRemoveCommand, } from './remove.js';
|
|
4
|
+
export { configSnapshotScheduleToggleCommand, } from './toggle.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,GAElC,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gCAAgC,GAEjC,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,mCAAmC,GAEpC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mCAAmC,GAEpC,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ConfigSnapshotScheduleListOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
serverName?: string;
|
|
4
|
+
json?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* List config snapshot schedules
|
|
8
|
+
*/
|
|
9
|
+
export declare function configSnapshotScheduleListCommand(options: ConfigSnapshotScheduleListOptions): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/list.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iCAAiC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,MAAM,CAAC,CA2EjB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { log, colors } from '@minecraft-docker/shared';
|
|
2
|
+
import { getContainer } from '../../../infrastructure/di/container.js';
|
|
3
|
+
/**
|
|
4
|
+
* List config snapshot schedules
|
|
5
|
+
*/
|
|
6
|
+
export async function configSnapshotScheduleListCommand(options) {
|
|
7
|
+
const container = getContainer(options.root);
|
|
8
|
+
const useCase = container.configSnapshotScheduleUseCase;
|
|
9
|
+
try {
|
|
10
|
+
const schedules = options.serverName
|
|
11
|
+
? await useCase.findByServer(options.serverName)
|
|
12
|
+
: await useCase.findAll();
|
|
13
|
+
if (options.json) {
|
|
14
|
+
console.log(JSON.stringify(schedules.map((s) => s.toJSON()), null, 2));
|
|
15
|
+
return 0;
|
|
16
|
+
}
|
|
17
|
+
if (schedules.length === 0) {
|
|
18
|
+
console.log('');
|
|
19
|
+
if (options.serverName) {
|
|
20
|
+
console.log(colors.dim(`No schedules configured for server "${options.serverName}".`));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
console.log(colors.dim('No schedules configured.'));
|
|
24
|
+
}
|
|
25
|
+
console.log(colors.dim(' Use: mcctl config-snapshot schedule add --server <name> --cron "0 3 * * *" --name "Daily"'));
|
|
26
|
+
console.log('');
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
console.log('');
|
|
30
|
+
console.log(colors.bold(`Config Snapshot Schedules (${schedules.length}):`));
|
|
31
|
+
console.log('');
|
|
32
|
+
for (const schedule of schedules) {
|
|
33
|
+
const status = schedule.enabled
|
|
34
|
+
? colors.green('enabled')
|
|
35
|
+
: colors.dim('disabled');
|
|
36
|
+
const name = colors.bold(schedule.name);
|
|
37
|
+
const cron = colors.cyan(schedule.cronExpression.expression);
|
|
38
|
+
const humanReadable = colors.dim(`(${schedule.cronExpression.toHumanReadable()})`);
|
|
39
|
+
console.log(` ${name} ${cron} ${humanReadable} [${status}]`);
|
|
40
|
+
console.log(` ID: ${colors.dim(schedule.id)}`);
|
|
41
|
+
console.log(` Server: ${colors.bold(schedule.serverName.value)}`);
|
|
42
|
+
console.log(` Retention: max ${colors.yellow(String(schedule.retentionCount))} snapshots`);
|
|
43
|
+
if (schedule.lastRunAt) {
|
|
44
|
+
const statusColor = schedule.lastRunStatus === 'success' ? colors.green : colors.red;
|
|
45
|
+
console.log(` Last run: ${statusColor(schedule.lastRunStatus ?? 'unknown')} at ${schedule.lastRunAt.toLocaleString()}`);
|
|
46
|
+
}
|
|
47
|
+
console.log('');
|
|
48
|
+
}
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
53
|
+
log.error(`Failed to list schedules: ${message}`);
|
|
54
|
+
return 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ConfigSnapshotScheduleRemoveOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
id: string;
|
|
4
|
+
force?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Remove a config snapshot schedule
|
|
8
|
+
*/
|
|
9
|
+
export declare function configSnapshotScheduleRemoveCommand(options: ConfigSnapshotScheduleRemoveOptions): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/remove.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mCAAmC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CACvD,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAyCjB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import { log, colors } from '@minecraft-docker/shared';
|
|
3
|
+
import { getContainer } from '../../../infrastructure/di/container.js';
|
|
4
|
+
/**
|
|
5
|
+
* Remove a config snapshot schedule
|
|
6
|
+
*/
|
|
7
|
+
export async function configSnapshotScheduleRemoveCommand(options) {
|
|
8
|
+
if (!options.id) {
|
|
9
|
+
log.error('Schedule ID is required. Usage: mcctl config-snapshot schedule remove <id>');
|
|
10
|
+
return 1;
|
|
11
|
+
}
|
|
12
|
+
const container = getContainer(options.root);
|
|
13
|
+
const useCase = container.configSnapshotScheduleUseCase;
|
|
14
|
+
try {
|
|
15
|
+
// Confirmation prompt (unless --force)
|
|
16
|
+
if (!options.force) {
|
|
17
|
+
const confirmed = await p.confirm({
|
|
18
|
+
message: `Remove schedule ${colors.cyan(options.id.substring(0, 8))}...?`,
|
|
19
|
+
initialValue: false,
|
|
20
|
+
});
|
|
21
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
22
|
+
console.log(colors.dim('\nRemoval cancelled.\n'));
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
await useCase.delete(options.id);
|
|
27
|
+
console.log('');
|
|
28
|
+
console.log(colors.green(`Schedule removed: ${colors.dim(options.id.substring(0, 8))}...`));
|
|
29
|
+
console.log('');
|
|
30
|
+
return 0;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
34
|
+
log.error(`Failed to remove schedule: ${message}`);
|
|
35
|
+
return 1;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAQvE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,OAA4C;IAE5C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CACP,4EAA4E,CAC7E,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,6BAA6B,CAAC;IAExD,IAAI,CAAC;QACH,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAChC,OAAO,EAAE,mBAAmB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;gBACzE,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,KAAK,CACV,qBAAqB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACjE,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ConfigSnapshotScheduleToggleOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
id: string;
|
|
4
|
+
action: 'enable' | 'disable';
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Enable or disable a config snapshot schedule
|
|
8
|
+
*/
|
|
9
|
+
export declare function configSnapshotScheduleToggleCommand(options: ConfigSnapshotScheduleToggleOptions): Promise<number>;
|
|
10
|
+
//# sourceMappingURL=toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/toggle.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mCAAmC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAsB,mCAAmC,CACvD,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,MAAM,CAAC,CAwCjB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { log, colors } from '@minecraft-docker/shared';
|
|
2
|
+
import { getContainer } from '../../../infrastructure/di/container.js';
|
|
3
|
+
/**
|
|
4
|
+
* Enable or disable a config snapshot schedule
|
|
5
|
+
*/
|
|
6
|
+
export async function configSnapshotScheduleToggleCommand(options) {
|
|
7
|
+
if (!options.id) {
|
|
8
|
+
log.error(`Schedule ID is required. Usage: mcctl config-snapshot schedule ${options.action} <id>`);
|
|
9
|
+
return 1;
|
|
10
|
+
}
|
|
11
|
+
const container = getContainer(options.root);
|
|
12
|
+
const useCase = container.configSnapshotScheduleUseCase;
|
|
13
|
+
try {
|
|
14
|
+
if (options.action === 'enable') {
|
|
15
|
+
await useCase.enable(options.id);
|
|
16
|
+
console.log('');
|
|
17
|
+
console.log(colors.green(`Schedule enabled: ${colors.dim(options.id.substring(0, 8))}...`));
|
|
18
|
+
console.log('');
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
await useCase.disable(options.id);
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(colors.yellow(`Schedule disabled: ${colors.dim(options.id.substring(0, 8))}...`));
|
|
24
|
+
console.log('');
|
|
25
|
+
}
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
30
|
+
log.error(`Failed to ${options.action} schedule: ${message}`);
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../../src/commands/config-snapshot/schedule/toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAQvE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,OAA4C;IAE5C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CACP,kEAAkE,OAAO,CAAC,MAAM,OAAO,CACxF,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,6BAA6B,CAAC;IAExD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,KAAK,CACV,qBAAqB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACjE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,MAAM,CACX,sBAAsB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAClE,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,cAAc,OAAO,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ConfigSnapshotShowOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
id: string;
|
|
4
|
+
files?: boolean;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Show details of a specific config snapshot
|
|
9
|
+
*/
|
|
10
|
+
export declare function configSnapshotShowCommand(options: ConfigSnapshotShowOptions): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=show.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/config-snapshot/show.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CA+DjB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { log, colors } from '@minecraft-docker/shared';
|
|
2
|
+
import { getContainer } from '../../infrastructure/di/container.js';
|
|
3
|
+
/**
|
|
4
|
+
* Show details of a specific config snapshot
|
|
5
|
+
*/
|
|
6
|
+
export async function configSnapshotShowCommand(options) {
|
|
7
|
+
if (!options.id) {
|
|
8
|
+
log.error('Snapshot ID is required. Usage: mcctl config-snapshot show <id>');
|
|
9
|
+
return 1;
|
|
10
|
+
}
|
|
11
|
+
const container = getContainer(options.root);
|
|
12
|
+
const useCase = container.configSnapshotUseCase;
|
|
13
|
+
try {
|
|
14
|
+
const snapshot = await useCase.findById(options.id);
|
|
15
|
+
if (!snapshot) {
|
|
16
|
+
log.error(`Snapshot not found: ${options.id}`);
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
if (options.json) {
|
|
20
|
+
console.log(JSON.stringify(snapshot.toJSON(), null, 2));
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
console.log('');
|
|
24
|
+
console.log(colors.bold('Config Snapshot Details'));
|
|
25
|
+
console.log('');
|
|
26
|
+
console.log(` ID: ${colors.cyan(snapshot.id)}`);
|
|
27
|
+
console.log(` Server: ${colors.bold(snapshot.serverName.value)}`);
|
|
28
|
+
console.log(` Created: ${colors.dim(snapshot.createdAt.toLocaleString())}`);
|
|
29
|
+
console.log(` Files: ${colors.yellow(String(snapshot.files.length))} files`);
|
|
30
|
+
if (snapshot.description) {
|
|
31
|
+
console.log(` Description: ${colors.dim(snapshot.description)}`);
|
|
32
|
+
}
|
|
33
|
+
if (snapshot.scheduleId) {
|
|
34
|
+
console.log(` Schedule ID: ${colors.dim(snapshot.scheduleId)}`);
|
|
35
|
+
}
|
|
36
|
+
if (options.files && snapshot.files.length > 0) {
|
|
37
|
+
console.log('');
|
|
38
|
+
console.log(colors.bold(' Files:'));
|
|
39
|
+
for (const file of snapshot.files) {
|
|
40
|
+
const sizeKb = (file.size / 1024).toFixed(1);
|
|
41
|
+
console.log(` ${colors.cyan(file.path.padEnd(40))} ${colors.dim(`${sizeKb} KB`)} ${colors.dim(file.hash.substring(0, 8))}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
console.log('');
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
49
|
+
log.error(`Failed to show snapshot: ${message}`);
|
|
50
|
+
return 1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/config-snapshot/show.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -24,4 +24,5 @@ export { upgradeCommand, type UpgradeCommandOptions } from './upgrade.js';
|
|
|
24
24
|
export { backupScheduleCommand, type BackupScheduleCommandOptions, } from './backup-schedule.js';
|
|
25
25
|
export { consoleInitCommand, consoleServiceCommand, consoleUserCommand, consoleApiCommand, consoleRemoveCommand, deleteAdminImages, type ConsoleInitOptions, type ConsoleServiceOptions, type ConsoleUserCommandOptions, type ConsoleApiCommandOptions, type ConsoleRemoveOptions, } from './console/index.js';
|
|
26
26
|
export { adminInitCommand, adminServiceCommand, adminUserCommand, adminApiCommand, type AdminInitOptions, type AdminServiceOptions, type AdminUserCommandOptions, type AdminApiCommandOptions, } from './console/index.js';
|
|
27
|
+
export { configSnapshotListCommand, type ConfigSnapshotListOptions, configSnapshotCreateCommand, type ConfigSnapshotCreateOptions, configSnapshotShowCommand, type ConfigSnapshotShowOptions, configSnapshotDeleteCommand, type ConfigSnapshotDeleteOptions, configSnapshotDiffCommand, type ConfigSnapshotDiffOptions, configSnapshotRestoreCommand, type ConfigSnapshotRestoreOptions, configSnapshotScheduleListCommand, type ConfigSnapshotScheduleListOptions, configSnapshotScheduleAddCommand, type ConfigSnapshotScheduleAddOptions, configSnapshotScheduleRemoveCommand, type ConfigSnapshotScheduleRemoveOptions, configSnapshotScheduleToggleCommand, type ConfigSnapshotScheduleToggleOptions, } from './config-snapshot/index.js';
|
|
27
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,KAAK,2BAA2B,EAChC,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,KAAK,2BAA2B,EAChC,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,4BAA4B,EACjC,iCAAiC,EACjC,KAAK,iCAAiC,EACtC,gCAAgC,EAChC,KAAK,gCAAgC,EACrC,mCAAmC,EACnC,KAAK,mCAAmC,EACxC,mCAAmC,EACnC,KAAK,mCAAmC,GACzC,MAAM,4BAA4B,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -26,4 +26,6 @@ export { backupScheduleCommand, } from './backup-schedule.js';
|
|
|
26
26
|
export { consoleInitCommand, consoleServiceCommand, consoleUserCommand, consoleApiCommand, consoleRemoveCommand, deleteAdminImages, } from './console/index.js';
|
|
27
27
|
// Backward compatibility aliases (deprecated - use console* instead)
|
|
28
28
|
export { adminInitCommand, adminServiceCommand, adminUserCommand, adminApiCommand, } from './console/index.js';
|
|
29
|
+
// Config snapshot commands
|
|
30
|
+
export { configSnapshotListCommand, configSnapshotCreateCommand, configSnapshotShowCommand, configSnapshotDeleteCommand, configSnapshotDiffCommand, configSnapshotRestoreCommand, configSnapshotScheduleListCommand, configSnapshotScheduleAddCommand, configSnapshotScheduleRemoveCommand, configSnapshotScheduleToggleCommand, } from './config-snapshot/index.js';
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAyB,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAA4B,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAA6B,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAgC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAmC,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAE9B,+BAA+B;AAC/B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAMlB,MAAM,oBAAoB,CAAC;AAE5B,qEAAqE;AACrE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAKhB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAyB,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAA4B,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAA6B,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAgC,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAmC,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAA4B,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,cAAc,EAA8B,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAE9B,+BAA+B;AAC/B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAMlB,MAAM,oBAAoB,CAAC;AAE5B,qEAAqE;AACrE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,GAKhB,MAAM,oBAAoB,CAAC;AAE5B,2BAA2B;AAC3B,OAAO,EACL,yBAAyB,EAEzB,2BAA2B,EAE3B,yBAAyB,EAEzB,2BAA2B,EAE3B,yBAAyB,EAEzB,4BAA4B,EAE5B,iCAAiC,EAEjC,gCAAgC,EAEhC,mCAAmC,EAEnC,mCAAmC,GAEpC,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Paths, log, colors, AuditActionEnum } from '@minecraft-docker/shared';
|
|
3
|
-
import { initCommand, statusCommand, createCommand, deleteCommand, worldCommand, backupCommand, execCommand, rconCommand, configCommand, opCommand, serverBackupCommand, serverRestoreCommand, whitelistCommand, banCommand, kickCommand, playerOnlineCommand, playerCommand, migrateCommand, modCommand, updateCommand, consoleInitCommand, consoleServiceCommand, consoleUserCommand, consoleApiCommand, consoleRemoveCommand, auditCommand, playitCommand, upgradeCommand, backupScheduleCommand, } from './commands/index.js';
|
|
3
|
+
import { initCommand, statusCommand, createCommand, deleteCommand, worldCommand, backupCommand, execCommand, rconCommand, configCommand, opCommand, serverBackupCommand, serverRestoreCommand, whitelistCommand, banCommand, kickCommand, playerOnlineCommand, playerCommand, migrateCommand, modCommand, updateCommand, consoleInitCommand, consoleServiceCommand, consoleUserCommand, consoleApiCommand, consoleRemoveCommand, auditCommand, playitCommand, upgradeCommand, backupScheduleCommand, configSnapshotListCommand, configSnapshotCreateCommand, configSnapshotShowCommand, configSnapshotDeleteCommand, configSnapshotDiffCommand, configSnapshotRestoreCommand, configSnapshotScheduleListCommand, configSnapshotScheduleAddCommand, configSnapshotScheduleRemoveCommand, configSnapshotScheduleToggleCommand, } from './commands/index.js';
|
|
4
4
|
import { ShellExecutor } from './lib/shell.js';
|
|
5
5
|
import { checkForUpdates } from './lib/update-checker.js';
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
@@ -203,6 +203,38 @@ ${colors.cyan('Backup Scheduling:')}
|
|
|
203
203
|
${colors.bold('backup schedule enable')} <id> Enable a schedule
|
|
204
204
|
${colors.bold('backup schedule disable')} <id> Disable a schedule
|
|
205
205
|
|
|
206
|
+
${colors.cyan('Config Snapshot Management:')}
|
|
207
|
+
${colors.bold('config-snapshot list')} [server] List snapshots (all or per-server)
|
|
208
|
+
--limit <n> Max results (default 20)
|
|
209
|
+
--json JSON output
|
|
210
|
+
${colors.bold('config-snapshot create')} <server> Create a snapshot
|
|
211
|
+
--description "..." Optional description
|
|
212
|
+
--json JSON output
|
|
213
|
+
${colors.bold('config-snapshot show')} <id> Show snapshot details
|
|
214
|
+
--files Include file list
|
|
215
|
+
--json JSON output
|
|
216
|
+
${colors.bold('config-snapshot diff')} <id1> <id2> Diff two snapshots
|
|
217
|
+
--files-only Show only changed file names
|
|
218
|
+
--json JSON output
|
|
219
|
+
${colors.bold('config-snapshot restore')} <id> Restore from snapshot
|
|
220
|
+
--force Skip confirmation
|
|
221
|
+
${colors.bold('config-snapshot delete')} <id> Delete a snapshot
|
|
222
|
+
--force Skip confirmation
|
|
223
|
+
|
|
224
|
+
${colors.cyan('Config Snapshot Schedules:')}
|
|
225
|
+
${colors.bold('config-snapshot schedule list')} List schedules
|
|
226
|
+
--server <name> Filter by server
|
|
227
|
+
--json JSON output
|
|
228
|
+
${colors.bold('config-snapshot schedule add')} [opts] Add a schedule
|
|
229
|
+
--server <name> Server name (required)
|
|
230
|
+
--cron "..." Cron expression (required)
|
|
231
|
+
--name "..." Schedule name (required)
|
|
232
|
+
--retention <n> Max snapshots to keep (default 10)
|
|
233
|
+
${colors.bold('config-snapshot schedule remove')} <id> Remove a schedule
|
|
234
|
+
--force Skip confirmation
|
|
235
|
+
${colors.bold('config-snapshot schedule enable')} <id> Enable a schedule
|
|
236
|
+
${colors.bold('config-snapshot schedule disable')} <id> Disable a schedule
|
|
237
|
+
|
|
206
238
|
${colors.cyan('Migration:')}
|
|
207
239
|
${colors.bold('migrate worlds')} Migrate worlds to shared directory
|
|
208
240
|
${colors.bold('migrate status')} Check migration status
|
|
@@ -379,7 +411,7 @@ function parseArgs(args) {
|
|
|
379
411
|
if (!result.command) {
|
|
380
412
|
result.command = arg;
|
|
381
413
|
}
|
|
382
|
-
else if (!result.subCommand && ['world', 'player', 'backup', 'op', 'whitelist', 'ban', 'router', 'migrate', 'mod', 'console', 'admin', 'playit'].includes(result.command)) {
|
|
414
|
+
else if (!result.subCommand && ['world', 'player', 'backup', 'op', 'whitelist', 'ban', 'router', 'migrate', 'mod', 'console', 'admin', 'playit', 'config-snapshot'].includes(result.command)) {
|
|
383
415
|
result.subCommand = arg;
|
|
384
416
|
}
|
|
385
417
|
else {
|
|
@@ -916,6 +948,117 @@ async function main() {
|
|
|
916
948
|
});
|
|
917
949
|
break;
|
|
918
950
|
}
|
|
951
|
+
case 'config-snapshot': {
|
|
952
|
+
// config-snapshot command: config-snapshot <list|create|show|diff|restore|delete|schedule>
|
|
953
|
+
const csAction = subCommand;
|
|
954
|
+
if (csAction === 'schedule') {
|
|
955
|
+
// config-snapshot schedule <list|add|remove|enable|disable>
|
|
956
|
+
const scheduleAction = positional[0];
|
|
957
|
+
switch (scheduleAction) {
|
|
958
|
+
case 'list':
|
|
959
|
+
exitCode = await configSnapshotScheduleListCommand({
|
|
960
|
+
root: rootDir,
|
|
961
|
+
serverName: flags['server'],
|
|
962
|
+
json: flags['json'] === true,
|
|
963
|
+
});
|
|
964
|
+
break;
|
|
965
|
+
case 'add':
|
|
966
|
+
exitCode = await configSnapshotScheduleAddCommand({
|
|
967
|
+
root: rootDir,
|
|
968
|
+
serverName: flags['server'],
|
|
969
|
+
cron: flags['cron'],
|
|
970
|
+
name: flags['name'],
|
|
971
|
+
retention: flags['retention']
|
|
972
|
+
? parseInt(flags['retention'], 10)
|
|
973
|
+
: undefined,
|
|
974
|
+
json: flags['json'] === true,
|
|
975
|
+
});
|
|
976
|
+
break;
|
|
977
|
+
case 'remove':
|
|
978
|
+
exitCode = await configSnapshotScheduleRemoveCommand({
|
|
979
|
+
root: rootDir,
|
|
980
|
+
id: positional[1] ?? '',
|
|
981
|
+
force: flags['force'] === true,
|
|
982
|
+
});
|
|
983
|
+
break;
|
|
984
|
+
case 'enable':
|
|
985
|
+
exitCode = await configSnapshotScheduleToggleCommand({
|
|
986
|
+
root: rootDir,
|
|
987
|
+
id: positional[1] ?? '',
|
|
988
|
+
action: 'enable',
|
|
989
|
+
});
|
|
990
|
+
break;
|
|
991
|
+
case 'disable':
|
|
992
|
+
exitCode = await configSnapshotScheduleToggleCommand({
|
|
993
|
+
root: rootDir,
|
|
994
|
+
id: positional[1] ?? '',
|
|
995
|
+
action: 'disable',
|
|
996
|
+
});
|
|
997
|
+
break;
|
|
998
|
+
default:
|
|
999
|
+
log.error('Usage: mcctl config-snapshot schedule <list|add|remove|enable|disable>');
|
|
1000
|
+
exitCode = 1;
|
|
1001
|
+
}
|
|
1002
|
+
break;
|
|
1003
|
+
}
|
|
1004
|
+
// Snapshot commands
|
|
1005
|
+
switch (csAction) {
|
|
1006
|
+
case 'list':
|
|
1007
|
+
exitCode = await configSnapshotListCommand({
|
|
1008
|
+
root: rootDir,
|
|
1009
|
+
serverName: positional[0],
|
|
1010
|
+
limit: flags['limit']
|
|
1011
|
+
? parseInt(flags['limit'], 10)
|
|
1012
|
+
: undefined,
|
|
1013
|
+
json: flags['json'] === true,
|
|
1014
|
+
});
|
|
1015
|
+
break;
|
|
1016
|
+
case 'create':
|
|
1017
|
+
exitCode = await configSnapshotCreateCommand({
|
|
1018
|
+
root: rootDir,
|
|
1019
|
+
serverName: positional[0],
|
|
1020
|
+
description: flags['description'],
|
|
1021
|
+
json: flags['json'] === true,
|
|
1022
|
+
});
|
|
1023
|
+
break;
|
|
1024
|
+
case 'show':
|
|
1025
|
+
exitCode = await configSnapshotShowCommand({
|
|
1026
|
+
root: rootDir,
|
|
1027
|
+
id: positional[0] ?? '',
|
|
1028
|
+
files: flags['files'] === true,
|
|
1029
|
+
json: flags['json'] === true,
|
|
1030
|
+
});
|
|
1031
|
+
break;
|
|
1032
|
+
case 'diff':
|
|
1033
|
+
exitCode = await configSnapshotDiffCommand({
|
|
1034
|
+
root: rootDir,
|
|
1035
|
+
id1: positional[0] ?? '',
|
|
1036
|
+
id2: positional[1] ?? '',
|
|
1037
|
+
filesOnly: flags['files-only'] === true,
|
|
1038
|
+
json: flags['json'] === true,
|
|
1039
|
+
});
|
|
1040
|
+
break;
|
|
1041
|
+
case 'restore':
|
|
1042
|
+
exitCode = await configSnapshotRestoreCommand({
|
|
1043
|
+
root: rootDir,
|
|
1044
|
+
id: positional[0] ?? '',
|
|
1045
|
+
force: flags['force'] === true,
|
|
1046
|
+
noSafety: flags['no-safety'] === true,
|
|
1047
|
+
});
|
|
1048
|
+
break;
|
|
1049
|
+
case 'delete':
|
|
1050
|
+
exitCode = await configSnapshotDeleteCommand({
|
|
1051
|
+
root: rootDir,
|
|
1052
|
+
id: positional[0] ?? '',
|
|
1053
|
+
force: flags['force'] === true,
|
|
1054
|
+
});
|
|
1055
|
+
break;
|
|
1056
|
+
default:
|
|
1057
|
+
log.error('Usage: mcctl config-snapshot <list|create|show|diff|restore|delete|schedule>');
|
|
1058
|
+
exitCode = 1;
|
|
1059
|
+
}
|
|
1060
|
+
break;
|
|
1061
|
+
}
|
|
919
1062
|
default:
|
|
920
1063
|
log.error(`Unknown command: ${command}`);
|
|
921
1064
|
printUsage();
|