@sfmc-bds/cli 0.1.0 → 0.2.0-beta.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/README.md +7 -1
- package/dist/cli-result.d.ts +12 -0
- package/dist/cli-result.d.ts.map +1 -0
- package/dist/cli-result.js +15 -0
- package/dist/cli-result.js.map +7 -0
- package/dist/commands-behavior-pack.d.ts +11 -42
- package/dist/commands-behavior-pack.d.ts.map +1 -1
- package/dist/commands-behavior-pack.js +40 -159
- package/dist/commands-behavior-pack.js.map +7 -1
- package/dist/commands-reload.d.ts +9 -0
- package/dist/commands-reload.d.ts.map +1 -0
- package/dist/commands-reload.js +30 -0
- package/dist/commands-reload.js.map +7 -0
- package/dist/commands.d.ts +7 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +182 -172
- package/dist/commands.js.map +7 -1
- package/dist/i18n/index.d.ts +26 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +107 -0
- package/dist/i18n/index.js.map +7 -0
- package/dist/i18n/locales/en.d.ts +381 -0
- package/dist/i18n/locales/en.d.ts.map +1 -0
- package/dist/i18n/locales/en.js +393 -0
- package/dist/i18n/locales/en.js.map +7 -0
- package/dist/i18n/locales/zh-CN.d.ts +4 -0
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -0
- package/dist/i18n/locales/zh-CN.js +379 -0
- package/dist/i18n/locales/zh-CN.js.map +7 -0
- package/dist/i18n/types.d.ts +7 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +17 -0
- package/dist/i18n/types.js.map +7 -0
- package/dist/index.d.ts +5 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -43
- package/dist/index.js.map +7 -1
- package/dist/interactive-prompts.d.ts +8 -0
- package/dist/interactive-prompts.d.ts.map +1 -0
- package/dist/interactive-prompts.js +57 -0
- package/dist/interactive-prompts.js.map +7 -0
- package/dist/locale-command.d.ts +3 -0
- package/dist/locale-command.d.ts.map +1 -0
- package/dist/locale-command.js +19 -0
- package/dist/locale-command.js.map +7 -0
- package/dist/logs.d.ts +22 -4
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +208 -193
- package/dist/logs.js.map +7 -1
- package/dist/main.js +135 -173
- package/dist/main.js.map +7 -1
- package/dist/module-commands.d.ts +43 -4
- package/dist/module-commands.d.ts.map +1 -1
- package/dist/module-commands.js +440 -327
- package/dist/module-commands.js.map +7 -1
- package/dist/module-fingerprint.d.ts +7 -0
- package/dist/module-fingerprint.d.ts.map +1 -0
- package/dist/module-fingerprint.js +31 -0
- package/dist/module-fingerprint.js.map +7 -0
- package/dist/module-wizard.d.ts +14 -0
- package/dist/module-wizard.d.ts.map +1 -0
- package/dist/module-wizard.js +313 -0
- package/dist/module-wizard.js.map +7 -0
- package/dist/pack-lifecycle.d.ts +95 -0
- package/dist/pack-lifecycle.d.ts.map +1 -0
- package/dist/pack-lifecycle.js +634 -0
- package/dist/pack-lifecycle.js.map +7 -0
- package/dist/pack-update/bindings.d.ts +12 -0
- package/dist/pack-update/bindings.d.ts.map +1 -0
- package/dist/pack-update/bindings.js +64 -0
- package/dist/pack-update/bindings.js.map +7 -0
- package/dist/pack-update/config.d.ts +22 -0
- package/dist/pack-update/config.d.ts.map +1 -0
- package/dist/pack-update/config.js +141 -0
- package/dist/pack-update/config.js.map +7 -0
- package/dist/pack-update/providers/curseforge.d.ts +23 -0
- package/dist/pack-update/providers/curseforge.d.ts.map +1 -0
- package/dist/pack-update/providers/curseforge.js +209 -0
- package/dist/pack-update/providers/curseforge.js.map +7 -0
- package/dist/pack-update/providers/index.d.ts +16 -0
- package/dist/pack-update/providers/index.d.ts.map +1 -0
- package/dist/pack-update/providers/index.js +37 -0
- package/dist/pack-update/providers/index.js.map +7 -0
- package/dist/pack-update/service.d.ts +21 -0
- package/dist/pack-update/service.d.ts.map +1 -0
- package/dist/pack-update/service.js +567 -0
- package/dist/pack-update/service.js.map +7 -0
- package/dist/pack-update/types.d.ts +126 -0
- package/dist/pack-update/types.d.ts.map +1 -0
- package/dist/pack-update/types.js +8 -0
- package/dist/pack-update/types.js.map +7 -0
- package/dist/pack-update/version-policy.d.ts +80 -0
- package/dist/pack-update/version-policy.d.ts.map +1 -0
- package/dist/pack-update/version-policy.js +216 -0
- package/dist/pack-update/version-policy.js.map +7 -0
- package/dist/registry.d.ts +12 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +73 -106
- package/dist/registry.js.map +7 -1
- package/dist/remote-agent.d.ts.map +1 -1
- package/dist/remote-agent.js +160 -176
- package/dist/remote-agent.js.map +7 -1
- package/dist/repl.d.ts +4 -0
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +683 -605
- package/dist/repl.js.map +7 -1
- package/dist/runtime.d.ts +40 -14
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +185 -62
- package/dist/runtime.js.map +7 -1
- package/dist/services.d.ts +2 -0
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +251 -238
- package/dist/services.js.map +7 -1
- package/dist/sfmc-modules-root.d.ts +24 -0
- package/dist/sfmc-modules-root.d.ts.map +1 -0
- package/dist/sfmc-modules-root.js +70 -0
- package/dist/sfmc-modules-root.js.map +7 -0
- package/dist/theme.d.ts +4 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +134 -48
- package/dist/theme.js.map +7 -1
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +363 -438
- package/dist/wizard.js.map +7 -1
- package/dist/world-packs.d.ts +22 -0
- package/dist/world-packs.d.ts.map +1 -0
- package/dist/world-packs.js +872 -0
- package/dist/world-packs.js.map +7 -0
- package/package.json +10 -10
- package/dist/dispatcher.d.ts +0 -13
- package/dist/dispatcher.d.ts.map +0 -1
- package/dist/dispatcher.js +0 -23
- package/dist/dispatcher.js.map +0 -1
- package/dist/terminal.d.ts +0 -3
- package/dist/terminal.d.ts.map +0 -1
- package/dist/terminal.js +0 -178
- package/dist/terminal.js.map +0 -1
package/dist/main.js
CHANGED
|
@@ -1,189 +1,151 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import fs from "node:fs";
|
|
3
2
|
import process from "node:process";
|
|
4
|
-
import { configPath } from "@sfmc-bds/sdk/node/config";
|
|
5
3
|
import pkg from "../package.json" with { type: "json" };
|
|
6
4
|
import { cmdLogs, cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from "./commands.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
5
|
+
import { getHelp, startRepl } from "./repl.js";
|
|
6
|
+
import { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from "./module-commands.js";
|
|
7
|
+
import { dispatchPacksCommand, isPacksCommand } from "./world-packs.js";
|
|
10
8
|
import { disableRemoteAgent, enrollRemoteAgent, remoteStatus, startRemoteAgent, stopRemoteAgent } from "./remote-agent.js";
|
|
9
|
+
import { cmdLocale } from "./locale-command.js";
|
|
10
|
+
import { initLocale, stripLangArgs, t } from "./i18n/index.js";
|
|
11
|
+
import { ROOT } from "./runtime.js";
|
|
11
12
|
import { c } from "./theme.js";
|
|
12
13
|
function printVersion() {
|
|
13
|
-
|
|
14
|
-
${c.text(
|
|
15
|
-
${c.text(
|
|
16
|
-
${c.text(
|
|
14
|
+
console.log(`${c.text(`\u282A\u2841\u286F\u2801`)}
|
|
15
|
+
${c.text(`\u2812\u2801\u2803`)}${c.purple(`\u2804`)}
|
|
16
|
+
${c.text(`\u2877\u2847\u284E\u2801`)} ${c.text(`S`)}${c.dim(`cripts`)} ${c.text(`F`)}${c.dim(`or`)} ${c.text(`M`)}${c.dim(`ine`)}${c.text(`c`)}${c.dim(`raft Server`)} v${pkg.version}
|
|
17
|
+
${c.text(`\u2803\u2803\u2811\u2802`)} ${c.dim(`https://github.com/DogeLakeDev/ScriptsForMinecraftServer`)}`);
|
|
17
18
|
}
|
|
18
19
|
function printUsage() {
|
|
19
|
-
|
|
20
|
+
console.log(`${getHelp()}`);
|
|
20
21
|
}
|
|
21
22
|
async function main() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
const stripped = stripLangArgs(process.argv.slice(2));
|
|
24
|
+
initLocale({ root: ROOT, flag: stripped.lang });
|
|
25
|
+
const args = stripped.args;
|
|
26
|
+
if (args.length === 0) {
|
|
27
|
+
const { isRuntimeInitialized } = await import("./runtime.js");
|
|
28
|
+
if (!isRuntimeInitialized()) {
|
|
29
|
+
const { runWizard } = await import("./wizard.js");
|
|
30
|
+
await runWizard();
|
|
31
|
+
const { refreshServices } = await import("./services.js");
|
|
32
|
+
refreshServices();
|
|
33
|
+
}
|
|
34
|
+
const warn = await scanAndWarnUnknown();
|
|
35
|
+
if (warn) console.log(warn);
|
|
36
|
+
startRemoteAgent();
|
|
37
|
+
await startRepl();
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const [cmd, ...rest] = args;
|
|
41
|
+
switch (cmd) {
|
|
42
|
+
case "--help":
|
|
43
|
+
case "-h":
|
|
44
|
+
case "help":
|
|
45
|
+
printUsage();
|
|
46
|
+
break;
|
|
47
|
+
case "--version":
|
|
48
|
+
case "-v":
|
|
49
|
+
printVersion();
|
|
50
|
+
break;
|
|
51
|
+
case "locale":
|
|
52
|
+
case "lang":
|
|
53
|
+
console.log(cmdLocale(rest));
|
|
54
|
+
break;
|
|
55
|
+
case "status":
|
|
56
|
+
console.log(cmdStatus());
|
|
57
|
+
break;
|
|
58
|
+
case "logs":
|
|
59
|
+
case "log": {
|
|
60
|
+
const out = cmdLogs(rest);
|
|
61
|
+
if (out) console.log(out);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case "start":
|
|
65
|
+
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
66
|
+
console.log(await cmdStartAll());
|
|
67
|
+
} else if (rest[0]) {
|
|
68
|
+
console.log(await cmdStart(rest[0]));
|
|
69
|
+
} else {
|
|
70
|
+
console.log(c.yellow(t("svc.start.usage")));
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case "stop":
|
|
74
|
+
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
75
|
+
console.log(await cmdStopAll());
|
|
76
|
+
} else if (rest[0]) {
|
|
77
|
+
console.log(await cmdStop(rest[0]));
|
|
78
|
+
} else {
|
|
79
|
+
console.log(c.yellow(t("svc.stop.usage")));
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case "restart":
|
|
83
|
+
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
84
|
+
await cmdStopAll();
|
|
85
|
+
console.log(await cmdStartAll());
|
|
86
|
+
} else if (rest[0]) {
|
|
87
|
+
console.log(await cmdRestart(rest[0]));
|
|
88
|
+
} else {
|
|
89
|
+
console.log(c.yellow(t("svc.restart.usage")));
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case "update":
|
|
93
|
+
console.log(await cmdUpdate(rest));
|
|
94
|
+
break;
|
|
95
|
+
case "packs":
|
|
96
|
+
case "addon": {
|
|
97
|
+
const [sub, ...subRest] = rest;
|
|
98
|
+
console.log(await dispatchPacksCommand(sub, subRest));
|
|
99
|
+
break;
|
|
40
100
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
else {
|
|
70
|
-
console.log(c.yellow("Usage: sfmc start <service>|-all"));
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
case "stop":
|
|
74
|
-
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
75
|
-
console.log(await cmdStopAll());
|
|
76
|
-
}
|
|
77
|
-
else if (rest[0]) {
|
|
78
|
-
console.log(await cmdStop(rest[0]));
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log(c.yellow("Usage: sfmc stop <service>|-all"));
|
|
82
|
-
}
|
|
83
|
-
break;
|
|
84
|
-
case "restart":
|
|
85
|
-
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
86
|
-
await cmdStopAll();
|
|
87
|
-
console.log(await cmdStartAll());
|
|
88
|
-
}
|
|
89
|
-
else if (rest[0]) {
|
|
90
|
-
console.log(await cmdRestart(rest[0]));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
console.log(c.yellow("Usage: sfmc restart <service>|-all"));
|
|
94
|
-
}
|
|
95
|
-
break;
|
|
96
|
-
case "update":
|
|
97
|
-
console.log(await cmdUpdate(rest));
|
|
98
|
-
break;
|
|
99
|
-
case "behavior-pack":
|
|
100
|
-
case "bp": {
|
|
101
|
-
const [sub, ...subRest] = rest;
|
|
102
|
-
switch (sub) {
|
|
103
|
-
case "build":
|
|
104
|
-
console.log(await cmdBehaviorPackBuild(subRest));
|
|
105
|
-
break;
|
|
106
|
-
case "deploy":
|
|
107
|
-
console.log(await cmdBehaviorPackDeploy(subRest));
|
|
108
|
-
break;
|
|
109
|
-
default:
|
|
110
|
-
console.log(c.yellow("Usage: sfmc behavior-pack <build|deploy>"));
|
|
111
|
-
}
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
case "init": {
|
|
115
|
-
const { runWizard } = await import("./wizard.js");
|
|
116
|
-
await runWizard();
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
case "remote": {
|
|
120
|
-
const [subcommand, ...remoteArgs] = rest;
|
|
121
|
-
if (subcommand === "enroll" && remoteArgs[0] && remoteArgs[1]) {
|
|
122
|
-
const name = remoteArgs[2] ?? process.env.COMPUTERNAME ?? "sfmc-agent";
|
|
123
|
-
const agentId = await enrollRemoteAgent(remoteArgs[0], remoteArgs[1], name);
|
|
124
|
-
console.log(`Enrolled remote agent: ${agentId}`);
|
|
125
|
-
startRemoteAgent();
|
|
126
|
-
const exit = () => {
|
|
127
|
-
stopRemoteAgent();
|
|
128
|
-
process.exit(0);
|
|
129
|
-
};
|
|
130
|
-
process.once("SIGINT", exit);
|
|
131
|
-
process.once("SIGTERM", exit);
|
|
132
|
-
/* keep alive so the WS loop can run; ctrl-c exits. */
|
|
133
|
-
await new Promise(() => undefined);
|
|
134
|
-
}
|
|
135
|
-
else if (subcommand === "status") {
|
|
136
|
-
console.log(JSON.stringify(remoteStatus(), null, 2));
|
|
137
|
-
}
|
|
138
|
-
else if (subcommand === "disable") {
|
|
139
|
-
disableRemoteAgent();
|
|
140
|
-
console.log("Remote agent disabled");
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
console.log("Usage: sfmc remote enroll <controller-url> <enrollment-token> [name] | sfmc remote status | sfmc remote disable");
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
}
|
|
147
|
-
case "module":
|
|
148
|
-
case "mod": {
|
|
149
|
-
const [sub, ...subRest] = rest;
|
|
150
|
-
switch (sub) {
|
|
151
|
-
case "list":
|
|
152
|
-
console.log(await cmdModuleList(subRest));
|
|
153
|
-
break;
|
|
154
|
-
case "install":
|
|
155
|
-
console.log(await cmdModuleInstall(subRest));
|
|
156
|
-
break;
|
|
157
|
-
case "uninstall":
|
|
158
|
-
case "remove":
|
|
159
|
-
console.log(await cmdModuleUninstall(subRest));
|
|
160
|
-
break;
|
|
161
|
-
case "verify":
|
|
162
|
-
console.log(await cmdModuleVerify(subRest));
|
|
163
|
-
break;
|
|
164
|
-
case "info":
|
|
165
|
-
console.log(await cmdModuleInfo(subRest));
|
|
166
|
-
break;
|
|
167
|
-
case "enable":
|
|
168
|
-
console.log(await cmdModuleEnable(subRest));
|
|
169
|
-
break;
|
|
170
|
-
case "disable":
|
|
171
|
-
console.log(await cmdModuleDisable(subRest));
|
|
172
|
-
break;
|
|
173
|
-
default:
|
|
174
|
-
console.log(c.yellow("Usage: sfmc module <list|install|uninstall|verify|info|enable|disable> [args]"));
|
|
175
|
-
}
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
default:
|
|
179
|
-
console.log(c.red(`Unknown command: ${cmd}`));
|
|
180
|
-
printUsage();
|
|
181
|
-
process.exit(1);
|
|
101
|
+
case "init": {
|
|
102
|
+
const { runWizard } = await import("./wizard.js");
|
|
103
|
+
await runWizard();
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
case "remote": {
|
|
107
|
+
const [subcommand, ...remoteArgs] = rest;
|
|
108
|
+
if (subcommand === "enroll" && remoteArgs[0] && remoteArgs[1]) {
|
|
109
|
+
const name = remoteArgs[2] ?? process.env.COMPUTERNAME ?? "sfmc-agent";
|
|
110
|
+
const agentId = await enrollRemoteAgent(remoteArgs[0], remoteArgs[1], name);
|
|
111
|
+
console.log(t("remote.enrolled", { id: agentId }));
|
|
112
|
+
startRemoteAgent();
|
|
113
|
+
const exit = () => {
|
|
114
|
+
stopRemoteAgent();
|
|
115
|
+
process.exit(0);
|
|
116
|
+
};
|
|
117
|
+
process.once("SIGINT", exit);
|
|
118
|
+
process.once("SIGTERM", exit);
|
|
119
|
+
await new Promise(() => void 0);
|
|
120
|
+
} else if (subcommand === "status") {
|
|
121
|
+
console.log(JSON.stringify(remoteStatus(), null, 2));
|
|
122
|
+
} else if (subcommand === "disable") {
|
|
123
|
+
disableRemoteAgent();
|
|
124
|
+
console.log(t("remote.disabled"));
|
|
125
|
+
} else {
|
|
126
|
+
console.log(t("remote.usage"));
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
182
129
|
}
|
|
183
|
-
|
|
130
|
+
default:
|
|
131
|
+
if (isModuleCommand(cmd)) {
|
|
132
|
+
const [sub, ...subRest] = rest;
|
|
133
|
+
console.log(await dispatchModuleCommand(sub, subRest));
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
if (isPacksCommand(cmd)) {
|
|
137
|
+
const [sub, ...subRest] = rest;
|
|
138
|
+
console.log(await dispatchPacksCommand(sub, subRest));
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
console.log(c.red(t("common.unknownCommand", { cmd: cmd ?? "" })));
|
|
142
|
+
printUsage();
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
process.exit(0);
|
|
184
146
|
}
|
|
185
147
|
main().catch((err) => {
|
|
186
|
-
|
|
187
|
-
|
|
148
|
+
console.error(c.red(err?.message ? t("common.error", { message: err.message }) : t("common.fatal")));
|
|
149
|
+
process.exit(1);
|
|
188
150
|
});
|
|
189
|
-
//# sourceMappingURL=main.js.map
|
|
151
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/main.ts"],
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\nimport process from \"node:process\";\nimport pkg from \"../package.json\" with { type: \"json\" };\nimport { cmdLogs, cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from \"./commands.js\";\nimport { getHelp, startRepl } from \"./repl.js\";\nimport { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from \"./module-commands.js\";\nimport { dispatchPacksCommand, isPacksCommand } from \"./world-packs.js\";\nimport { disableRemoteAgent, enrollRemoteAgent, remoteStatus, startRemoteAgent, stopRemoteAgent } from \"./remote-agent.js\";\nimport { cmdLocale } from \"./locale-command.js\";\nimport { initLocale, stripLangArgs, t } from \"./i18n/index.js\";\nimport { ROOT } from \"./runtime.js\";\nimport { c } from \"./theme.js\";\n\nfunction printVersion(): void {\n /* \u6B64\u524D\u6A21\u677F\u5B57\u7B26\u4E32\u672A\u5199\u5165 stdout,\u5BFC\u81F4 `sfmc --version` \u65E0\u8F93\u51FA\u3002 */\n console.log(`${c.text(`\u282A\u2841\u286F\u2801`)}\n ${c.text(`\u2812\u2801\u2803`)}${c.purple(`\u2804`)}\n ${c.text(`\u2877\u2847\u284E\u2801`)} ${c.text(`S`)}${c.dim(`cripts`)} ${c.text(`F`)}${c.dim(`or`)} ${c.text(`M`)}${c.dim(`ine`)}${c.text(`c`)}${c.dim(`raft Server`)} v${pkg.version}\n ${c.text(`\u2803\u2803\u2811\u2802`)} ${c.dim(`https://github.com/DogeLakeDev/ScriptsForMinecraftServer`)}`);\n}\n\nfunction printUsage(): void {\n console.log(`${getHelp()}`);\n}\n\nasync function main(): Promise<void> {\n const stripped = stripLangArgs(process.argv.slice(2));\n initLocale({ root: ROOT, flag: stripped.lang });\n const args = stripped.args;\n\n if (args.length === 0) {\n /* \u9996\u6B21\u8FD0\u884C:\u4EE5 runtime.json#initialized_at \u4E3A\u51C6(\u975E db_config \u662F\u5426\u5B58\u5728)\u3002\n * \u914D\u7F6E\u9AA8\u67B6\u7531 services.ensureJsonConfig \u5728\u542F\u52A8\u65F6\u521B\u5EFA,\u4E0D\u80FD\u518D\u5F53\u300C\u672A\u521D\u59CB\u5316\u300D\u4FE1\u53F7\u3002 */\n const { isRuntimeInitialized } = await import(\"./runtime.js\");\n if (!isRuntimeInitialized()) {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n const { refreshServices } = await import(\"./services.js\");\n refreshServices();\n }\n /* Print yellow warnings for modules from outside the first-party registry.\n * Best-effort: registry unreachable \u2192 no warning, no failure. */\n const warn = await scanAndWarnUnknown();\n if (warn) console.log(warn);\n startRemoteAgent();\n await startRepl();\n return;\n }\n\n const [cmd, ...rest] = args;\n\n switch (cmd) {\n case \"--help\":\n case \"-h\":\n case \"help\":\n printUsage();\n break;\n case \"--version\":\n case \"-v\":\n printVersion();\n break;\n case \"locale\":\n case \"lang\":\n console.log(cmdLocale(rest));\n break;\n case \"status\":\n console.log(cmdStatus());\n break;\n case \"logs\":\n case \"log\": {\n const out = cmdLogs(rest);\n if (out) console.log(out);\n break;\n }\n case \"start\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdStart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.start.usage\")));\n }\n break;\n case \"stop\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n console.log(await cmdStopAll());\n } else if (rest[0]) {\n console.log(await cmdStop(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.stop.usage\")));\n }\n break;\n case \"restart\":\n if (rest[0] === \"-all\" || rest[0] === \"all\" || rest[0] === \"--all\") {\n await cmdStopAll();\n console.log(await cmdStartAll());\n } else if (rest[0]) {\n console.log(await cmdRestart(rest[0]));\n } else {\n console.log(c.yellow(t(\"svc.restart.usage\")));\n }\n break;\n case \"update\":\n console.log(await cmdUpdate(rest));\n break;\n case \"packs\":\n case \"addon\": {\n const [sub, ...subRest] = rest;\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n case \"init\": {\n const { runWizard } = await import(\"./wizard.js\");\n await runWizard();\n break;\n }\n case \"remote\": {\n const [subcommand, ...remoteArgs] = rest;\n if (subcommand === \"enroll\" && remoteArgs[0] && remoteArgs[1]) {\n const name = remoteArgs[2] ?? process.env.COMPUTERNAME ?? \"sfmc-agent\";\n const agentId = await enrollRemoteAgent(remoteArgs[0], remoteArgs[1], name);\n console.log(t(\"remote.enrolled\", { id: agentId }));\n startRemoteAgent();\n const exit = (): void => {\n stopRemoteAgent();\n process.exit(0);\n };\n process.once(\"SIGINT\", exit);\n process.once(\"SIGTERM\", exit);\n /* keep alive so the WS loop can run; ctrl-c exits. */\n await new Promise(() => undefined);\n } else if (subcommand === \"status\") {\n console.log(JSON.stringify(remoteStatus(), null, 2));\n } else if (subcommand === \"disable\") {\n disableRemoteAgent();\n console.log(t(\"remote.disabled\"));\n } else {\n console.log(t(\"remote.usage\"));\n }\n break;\n }\n default:\n /* module/mod \u522B\u540D\u53EA\u7EF4\u62A4 MODULE_CMD_NAMES,\u907F\u514D main/repl case \u94FE\u6F02\u79FB(OCP)\u3002 */\n if (isModuleCommand(cmd)) {\n const [sub, ...subRest] = rest;\n console.log(await dispatchModuleCommand(sub, subRest));\n break;\n }\n if (isPacksCommand(cmd)) {\n const [sub, ...subRest] = rest;\n console.log(await dispatchPacksCommand(sub, subRest));\n break;\n }\n console.log(c.red(t(\"common.unknownCommand\", { cmd: cmd ?? \"\" })));\n printUsage();\n process.exit(1);\n }\n process.exit(0);\n}\n\nmain().catch((err) => {\n console.error(c.red(err?.message ? t(\"common.error\", { message: err.message }) : t(\"common.fatal\")));\n process.exit(1);\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -2,25 +2,44 @@
|
|
|
2
2
|
* sfmc module-commands — runtime CLI for inspecting and managing modules
|
|
3
3
|
* already on disk under `modules/packages/<id>/`.
|
|
4
4
|
*
|
|
5
|
+
* 顶层命令别名:`module` / `mod`(由 main.ts / repl.ts 共同识别)。
|
|
6
|
+
*
|
|
5
7
|
* Subcommands:
|
|
6
8
|
* list List every installed module (reads each
|
|
7
9
|
* modules/packages/<id>/sapi/manifest.json).
|
|
8
10
|
* Marks registry-known modules with `●` and
|
|
9
11
|
* modules from an unknown publisher with `?`.
|
|
12
|
+
* search [id] 拉取 first-party registry 列表;带 id 则查该模块 registry info
|
|
10
13
|
* info <id> Show one module's manifest + on-disk fingerprint
|
|
11
14
|
* verify [id] Recompute the SHA-256 fingerprint of installed
|
|
12
15
|
* modules (id = one; no id = all)
|
|
13
16
|
* install <id> Wrapper around `tools/fetch-module.mjs install`.
|
|
14
17
|
* If `--from` is omitted, the first-party registry
|
|
15
18
|
* is consulted (Tanya7z/sfmc-modules).
|
|
19
|
+
* `--link` 透传:dir 源用 junction/symlink(开发期)。
|
|
16
20
|
* uninstall <id> Remove packages/<id>/ + catalog/lock via fetch-module
|
|
17
21
|
* enable <id> POST /api/sfmc/modules/:id/enable on db-server
|
|
18
22
|
* disable <id> POST /api/sfmc/modules/:id/disable on db-server
|
|
23
|
+
* create 交互式脚手架(sfmc-modules/packages + 可选 link)
|
|
24
|
+
* link [id] 无 id:交互选择;有 id:install --link(自动探测旁路 sfmc-modules)
|
|
25
|
+
* dev link + enable + build + deploy 一键本地联调
|
|
19
26
|
*
|
|
20
|
-
* The
|
|
21
|
-
*
|
|
27
|
+
* The CLI never connects to the network for local ops.
|
|
28
|
+
* `search`/`install`/`uninstall` 需要网络(或本地 cache / --from)。
|
|
22
29
|
* enable/disable go through db-server REST so module-lock.json stays consistent.
|
|
23
30
|
*/
|
|
31
|
+
/** 顶层命令名(主名 + 短别名),供 HELP / 补全 / 分发共用。 */
|
|
32
|
+
export declare const MODULE_CMD_NAMES: readonly ["module", "mod"];
|
|
33
|
+
export type ModuleCmdName = (typeof MODULE_CMD_NAMES)[number];
|
|
34
|
+
/** 判断是否为 module 顶层命令(含别名);避免 main/repl 再硬编码 case。 */
|
|
35
|
+
export declare function isModuleCommand(cmd: string | undefined): cmd is ModuleCmdName;
|
|
36
|
+
/** 染色后的 HELP 前缀,避免 HELP 硬编码 module/mod。 */
|
|
37
|
+
export declare function paintModuleCmdAlias(paint: (name: string) => string): string;
|
|
38
|
+
/** 对外展示与 Tab 补全用的子命令列表(不含 remove 等同义别名)。 */
|
|
39
|
+
export declare const MODULE_SUBCOMMANDS: readonly ["list", "search", "install", "uninstall", "verify", "info", "enable", "disable", "build", "reload", "create", "link", "dev"];
|
|
40
|
+
import { type CliResult } from "./cli-result.js";
|
|
41
|
+
/** Usage 行主名|别名(与 MODULE_CMD_NAMES 同源,避免与 HELP 漂移)。 */
|
|
42
|
+
export declare function moduleUsage(): string;
|
|
24
43
|
export declare function cmdModuleList(_args: string[]): Promise<string>;
|
|
25
44
|
/**
|
|
26
45
|
* Walk `modules/packages/<id>/` and print a one-line yellow warning for each
|
|
@@ -30,10 +49,30 @@ export declare function cmdModuleList(_args: string[]): Promise<string>;
|
|
|
30
49
|
* Best-effort: registry unreachable → no warning (no false positives).
|
|
31
50
|
*/
|
|
32
51
|
export declare function scanAndWarnUnknown(): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* 拉取 first-party registry 模块列表;带 id 时展示该条目的 registry info。
|
|
54
|
+
* 与本地 `info`(已安装磁盘详情)区分:`search` 看 registry,`info` 看本机 packages。
|
|
55
|
+
*/
|
|
56
|
+
export declare function cmdModuleSearch(args: string[]): Promise<string>;
|
|
33
57
|
export declare function cmdModuleInfo(args: string[]): Promise<string>;
|
|
34
58
|
export declare function cmdModuleVerify(args: string[]): Promise<string>;
|
|
35
|
-
export declare function cmdModuleEnable(args: string[]): Promise<
|
|
36
|
-
export declare function cmdModuleDisable(args: string[]): Promise<
|
|
59
|
+
export declare function cmdModuleEnable(args: string[]): Promise<CliResult>;
|
|
60
|
+
export declare function cmdModuleDisable(args: string[]): Promise<CliResult>;
|
|
37
61
|
export declare function cmdModuleInstall(args: string[]): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* `mod link [id] [--from dir:…]`
|
|
64
|
+
* - 有 id:等价 `install <id> --link`,缺省 --from 时自动拼旁路 packages/<id>
|
|
65
|
+
* - 无 id:进入交互选择(@clack/prompts)
|
|
66
|
+
*/
|
|
67
|
+
export declare function cmdModuleLink(args: string[]): Promise<string>;
|
|
38
68
|
export declare function cmdModuleUninstall(args: string[]): Promise<string>;
|
|
69
|
+
/**
|
|
70
|
+
* 统一分发 module/mod 子命令 —— CLI(`main.ts`)与 REPL(`repl.ts`)共用,
|
|
71
|
+
* 避免两处 switch 漂移(例如原先 REPL 缺 enable/disable)。
|
|
72
|
+
*
|
|
73
|
+
* `remove` 作为 uninstall 的同义别名保留。
|
|
74
|
+
*/
|
|
75
|
+
export declare function dispatchModuleCommand(sub: string | undefined, args: string[]): Promise<string>;
|
|
76
|
+
/** 同步枚举已安装模块 id,供 REPL Tab 补全(不读 fingerprint,尽量轻量)。 */
|
|
77
|
+
export declare function listInstalledModuleIdsSync(): string[];
|
|
39
78
|
//# sourceMappingURL=module-commands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-commands.d.ts","sourceRoot":"","sources":["../src/module-commands.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"module-commands.d.ts","sourceRoot":"","sources":["../src/module-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,0CAA0C;AAC1C,eAAO,MAAM,gBAAgB,YAAI,QAAQ,EAAE,KAAK,CAAU,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qDAAqD;AACrD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,IAAI,aAAa,CAE7E;AAED,2CAA2C;AAC3C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAG3E;AAED,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,YAC7B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,CACG,CAAC;AAOX,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAYvE,uDAAuD;AACvD,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAmFD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCpE;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAO1D;AAKD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+DrE;AAKD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BnE;AAKD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAerE;AAkDD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAIxE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAIzE;AAKD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDtE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBnE;AAKD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BxE;AAuBD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwCpG;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAWrD"}
|