@sfmc-bds/cli 0.2.0-beta.1 → 0.2.0-beta.6
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/argv-parse.d.ts +13 -0
- package/dist/argv-parse.d.ts.map +1 -0
- package/dist/argv-parse.js +32 -0
- package/dist/argv-parse.js.map +7 -0
- package/dist/cli-gate.d.ts +11 -0
- package/dist/cli-gate.d.ts.map +1 -0
- package/dist/cli-gate.js +48 -0
- package/dist/cli-gate.js.map +7 -0
- package/dist/cmd-remote.d.ts +13 -0
- package/dist/cmd-remote.d.ts.map +1 -0
- package/dist/cmd-remote.js +38 -0
- package/dist/cmd-remote.js.map +7 -0
- package/dist/command-palette.d.ts +61 -0
- package/dist/command-palette.d.ts.map +1 -0
- package/dist/command-palette.js +352 -0
- package/dist/command-palette.js.map +7 -0
- package/dist/command-surface.d.ts +92 -0
- package/dist/command-surface.d.ts.map +1 -0
- package/dist/command-surface.js +350 -0
- package/dist/command-surface.js.map +7 -0
- package/dist/commands-reload.js +2 -2
- package/dist/commands-reload.js.map +2 -2
- package/dist/commands.d.ts +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +79 -17
- package/dist/commands.js.map +2 -2
- package/dist/debug-command.d.ts +5 -0
- package/dist/debug-command.d.ts.map +1 -0
- package/dist/debug-command.js +118 -0
- package/dist/debug-command.js.map +7 -0
- package/dist/help-text.d.ts +3 -0
- package/dist/help-text.d.ts.map +1 -0
- package/dist/help-text.js +168 -0
- package/dist/help-text.js.map +7 -0
- package/dist/i18n/locales/en.d.ts +101 -20
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +105 -20
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
- package/dist/i18n/locales/zh-CN.js +153 -62
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +2 -2
- package/dist/logs.d.ts +16 -1
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +80 -11
- package/dist/logs.js.map +2 -2
- package/dist/main.js +58 -44
- package/dist/main.js.map +2 -2
- package/dist/module-commands.d.ts +29 -33
- package/dist/module-commands.d.ts.map +1 -1
- package/dist/module-commands.js +101 -37
- package/dist/module-commands.js.map +2 -2
- package/dist/module-pack-build.d.ts +10 -0
- package/dist/module-pack-build.d.ts.map +1 -0
- package/dist/module-pack-build.js +430 -0
- package/dist/module-pack-build.js.map +7 -0
- package/dist/module-publish.d.ts +69 -0
- package/dist/module-publish.d.ts.map +1 -0
- package/dist/module-publish.js +478 -0
- package/dist/module-publish.js.map +7 -0
- package/dist/module-watch.d.ts +32 -0
- package/dist/module-watch.d.ts.map +1 -0
- package/dist/module-watch.js +171 -0
- package/dist/module-watch.js.map +7 -0
- package/dist/module-wizard.d.ts +4 -6
- package/dist/module-wizard.d.ts.map +1 -1
- package/dist/module-wizard.js +108 -124
- package/dist/module-wizard.js.map +2 -2
- package/dist/pack-lifecycle.d.ts +1 -1
- package/dist/pack-lifecycle.d.ts.map +1 -1
- package/dist/pack-lifecycle.js +3 -3
- package/dist/pack-lifecycle.js.map +2 -2
- package/dist/pack-update/index.d.ts +18 -0
- package/dist/pack-update/index.d.ts.map +1 -0
- package/dist/pack-update/index.js +113 -0
- package/dist/pack-update/index.js.map +7 -0
- package/dist/registry.d.ts +6 -3
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +15 -3
- package/dist/registry.js.map +2 -2
- package/dist/remote-agent.d.ts.map +1 -1
- package/dist/remote-agent.js +7 -5
- package/dist/remote-agent.js.map +2 -2
- package/dist/repl-windows/format-display.d.ts +10 -0
- package/dist/repl-windows/format-display.d.ts.map +1 -0
- package/dist/repl-windows/format-display.js +57 -0
- package/dist/repl-windows/format-display.js.map +7 -0
- package/dist/repl-windows/host.d.ts +60 -0
- package/dist/repl-windows/host.d.ts.map +1 -0
- package/dist/repl-windows/host.js +179 -0
- package/dist/repl-windows/host.js.map +7 -0
- package/dist/repl-windows/index.d.ts +9 -0
- package/dist/repl-windows/index.d.ts.map +1 -0
- package/dist/repl-windows/index.js +13 -0
- package/dist/repl-windows/index.js.map +7 -0
- package/dist/repl-windows/logs-filter-window.d.ts +15 -0
- package/dist/repl-windows/logs-filter-window.d.ts.map +1 -0
- package/dist/repl-windows/logs-filter-window.js +77 -0
- package/dist/repl-windows/logs-filter-window.js.map +7 -0
- package/dist/repl-windows/service-window.d.ts +4 -0
- package/dist/repl-windows/service-window.d.ts.map +1 -0
- package/dist/repl-windows/service-window.js +28 -0
- package/dist/repl-windows/service-window.js.map +7 -0
- package/dist/repl-windows/types.d.ts +56 -0
- package/dist/repl-windows/types.d.ts.map +1 -0
- package/dist/repl-windows/types.js +1 -0
- package/dist/repl-windows/types.js.map +7 -0
- package/dist/repl.d.ts +7 -8
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +722 -412
- package/dist/repl.js.map +3 -3
- package/dist/runtime.d.ts +2 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +4 -0
- package/dist/runtime.js.map +2 -2
- package/dist/send-target.d.ts +11 -0
- package/dist/send-target.d.ts.map +1 -0
- package/dist/send-target.js +38 -0
- package/dist/send-target.js.map +7 -0
- package/dist/services.d.ts +21 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +146 -7
- package/dist/services.js.map +2 -2
- package/dist/theme.js +1 -1
- package/dist/theme.js.map +2 -2
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +11 -9
- package/dist/wizard.js.map +2 -2
- package/dist/world-packs.d.ts.map +1 -1
- package/dist/world-packs.js +6 -3
- package/dist/world-packs.js.map +2 -2
- package/package.json +16 -16
- package/dist/pack-update/bindings.d.ts +0 -12
- package/dist/pack-update/bindings.d.ts.map +0 -1
- package/dist/pack-update/bindings.js +0 -64
- package/dist/pack-update/bindings.js.map +0 -7
- package/dist/pack-update/config.d.ts +0 -22
- package/dist/pack-update/config.d.ts.map +0 -1
- package/dist/pack-update/config.js +0 -141
- package/dist/pack-update/config.js.map +0 -7
- package/dist/pack-update/providers/curseforge.d.ts +0 -23
- package/dist/pack-update/providers/curseforge.d.ts.map +0 -1
- package/dist/pack-update/providers/curseforge.js +0 -229
- package/dist/pack-update/providers/curseforge.js.map +0 -7
- package/dist/pack-update/providers/index.d.ts +0 -16
- package/dist/pack-update/providers/index.d.ts.map +0 -1
- package/dist/pack-update/providers/index.js +0 -37
- package/dist/pack-update/providers/index.js.map +0 -7
- package/dist/pack-update/service.d.ts +0 -21
- package/dist/pack-update/service.d.ts.map +0 -1
- package/dist/pack-update/service.js +0 -572
- package/dist/pack-update/service.js.map +0 -7
- package/dist/pack-update/types.d.ts +0 -126
- package/dist/pack-update/types.d.ts.map +0 -1
- package/dist/pack-update/types.js +0 -8
- package/dist/pack-update/types.js.map +0 -7
- package/dist/pack-update/version-policy.d.ts +0 -81
- package/dist/pack-update/version-policy.d.ts.map +0 -1
- package/dist/pack-update/version-policy.js +0 -210
- package/dist/pack-update/version-policy.js.map +0 -7
package/dist/main.js
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import process from "node:process";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
mapPacksSubAlias,
|
|
5
|
+
parseGlobalArgv,
|
|
6
|
+
resolveModuleShorthandSub
|
|
7
|
+
} from "./argv-parse.js";
|
|
8
|
+
import { cmdRemote } from "./cmd-remote.js";
|
|
9
|
+
import { cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from "./commands.js";
|
|
10
|
+
import { gateModuleSub, gatePacksSub, gateTopLevel } from "./cli-gate.js";
|
|
11
|
+
import { cmdDebug } from "./debug-command.js";
|
|
10
12
|
import { initLocale, stripLangArgs, t } from "./i18n/index.js";
|
|
13
|
+
import { cmdLocale } from "./locale-command.js";
|
|
14
|
+
import { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from "./module-commands.js";
|
|
15
|
+
import { startRemoteAgent } from "./remote-agent.js";
|
|
16
|
+
import { getHelp, playWelcomeAnimation, startRepl } from "./repl.js";
|
|
11
17
|
import { ROOT } from "./runtime.js";
|
|
12
18
|
import { c } from "./theme.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
${c.text(`\u2803\u2803\u2811\u2802`)} ${c.dim(`https://github.com/DogeLakeDev/ScriptsForMinecraftServer`)}`);
|
|
19
|
+
import { dispatchPacksCommand, isPacksCommand } from "./world-packs.js";
|
|
20
|
+
const MODE = "argv";
|
|
21
|
+
async function printVersion() {
|
|
22
|
+
await playWelcomeAnimation();
|
|
18
23
|
}
|
|
19
24
|
function printUsage() {
|
|
20
|
-
console.log(`${getHelp()}`);
|
|
25
|
+
console.log(`${getHelp("argv")}`);
|
|
26
|
+
}
|
|
27
|
+
function deny(msg) {
|
|
28
|
+
console.log(msg);
|
|
29
|
+
process.exit(1);
|
|
21
30
|
}
|
|
22
31
|
async function main() {
|
|
23
32
|
const stripped = stripLangArgs(process.argv.slice(2));
|
|
24
33
|
initLocale({ root: ROOT, flag: stripped.lang });
|
|
25
|
-
const args = stripped.args;
|
|
26
|
-
if (args.length === 0) {
|
|
34
|
+
const { packsMode, args } = parseGlobalArgv(stripped.args);
|
|
35
|
+
if (args.length === 0 && !packsMode) {
|
|
27
36
|
const { isRuntimeInitialized } = await import("./runtime.js");
|
|
28
37
|
if (!isRuntimeInitialized()) {
|
|
29
38
|
const { runWizard } = await import("./wizard.js");
|
|
@@ -37,7 +46,26 @@ async function main() {
|
|
|
37
46
|
await startRepl();
|
|
38
47
|
return;
|
|
39
48
|
}
|
|
49
|
+
if (packsMode) {
|
|
50
|
+
const [subRaw, ...subRest] = args;
|
|
51
|
+
const sub = mapPacksSubAlias(subRaw);
|
|
52
|
+
const g = gatePacksSub(sub, MODE);
|
|
53
|
+
if (g) deny(g);
|
|
54
|
+
console.log(await dispatchPacksCommand(sub, subRest));
|
|
55
|
+
process.exit(0);
|
|
56
|
+
}
|
|
40
57
|
const [cmd, ...rest] = args;
|
|
58
|
+
if (cmd && !["--help", "-h", "--version", "-v"].includes(cmd)) {
|
|
59
|
+
const topGate = gateTopLevel(cmd, MODE);
|
|
60
|
+
if (topGate) deny(topGate);
|
|
61
|
+
}
|
|
62
|
+
const moduleSub = resolveModuleShorthandSub(cmd);
|
|
63
|
+
if (moduleSub) {
|
|
64
|
+
const g = gateModuleSub(moduleSub, MODE);
|
|
65
|
+
if (g) deny(g);
|
|
66
|
+
console.log(await dispatchModuleCommand(moduleSub, rest));
|
|
67
|
+
process.exit(0);
|
|
68
|
+
}
|
|
41
69
|
switch (cmd) {
|
|
42
70
|
case "--help":
|
|
43
71
|
case "-h":
|
|
@@ -46,21 +74,22 @@ async function main() {
|
|
|
46
74
|
break;
|
|
47
75
|
case "--version":
|
|
48
76
|
case "-v":
|
|
49
|
-
printVersion();
|
|
77
|
+
await printVersion();
|
|
50
78
|
break;
|
|
51
79
|
case "locale":
|
|
52
80
|
case "lang":
|
|
53
81
|
console.log(cmdLocale(rest));
|
|
54
82
|
break;
|
|
83
|
+
case "debug":
|
|
84
|
+
console.log(await cmdDebug(rest));
|
|
85
|
+
break;
|
|
55
86
|
case "status":
|
|
56
|
-
console.log(cmdStatus());
|
|
87
|
+
console.log(await cmdStatus());
|
|
57
88
|
break;
|
|
58
89
|
case "logs":
|
|
59
|
-
case "log":
|
|
60
|
-
|
|
61
|
-
if (out) console.log(out);
|
|
90
|
+
case "log":
|
|
91
|
+
deny(gateTopLevel("logs", MODE) ?? c.yellow(t("cli.replOnly", { cmd: "logs" })));
|
|
62
92
|
break;
|
|
63
|
-
}
|
|
64
93
|
case "start":
|
|
65
94
|
if (rest[0] === "-all" || rest[0] === "all" || rest[0] === "--all") {
|
|
66
95
|
console.log(await cmdStartAll());
|
|
@@ -95,6 +124,8 @@ async function main() {
|
|
|
95
124
|
case "packs":
|
|
96
125
|
case "addon": {
|
|
97
126
|
const [sub, ...subRest] = rest;
|
|
127
|
+
const g = gatePacksSub(sub, MODE);
|
|
128
|
+
if (g) deny(g);
|
|
98
129
|
console.log(await dispatchPacksCommand(sub, subRest));
|
|
99
130
|
break;
|
|
100
131
|
}
|
|
@@ -103,38 +134,21 @@ async function main() {
|
|
|
103
134
|
await runWizard();
|
|
104
135
|
break;
|
|
105
136
|
}
|
|
106
|
-
case "remote":
|
|
107
|
-
|
|
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
|
-
}
|
|
137
|
+
case "remote":
|
|
138
|
+
console.log(await cmdRemote(rest, { daemonAfterEnroll: true }));
|
|
128
139
|
break;
|
|
129
|
-
}
|
|
130
140
|
default:
|
|
131
141
|
if (isModuleCommand(cmd)) {
|
|
132
142
|
const [sub, ...subRest] = rest;
|
|
143
|
+
const g = gateModuleSub(sub, MODE);
|
|
144
|
+
if (g) deny(g);
|
|
133
145
|
console.log(await dispatchModuleCommand(sub, subRest));
|
|
134
146
|
break;
|
|
135
147
|
}
|
|
136
148
|
if (isPacksCommand(cmd)) {
|
|
137
149
|
const [sub, ...subRest] = rest;
|
|
150
|
+
const g = gatePacksSub(sub, MODE);
|
|
151
|
+
if (g) deny(g);
|
|
138
152
|
console.log(await dispatchPacksCommand(sub, subRest));
|
|
139
153
|
break;
|
|
140
154
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\nimport process from \"node:process\";\nimport
|
|
5
|
-
"mappings": ";AACA,OAAO,aAAa;AACpB,
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\nimport process from \"node:process\";\nimport {\n mapPacksSubAlias,\n parseGlobalArgv,\n resolveModuleShorthandSub,\n} from \"./argv-parse.js\";\nimport { cmdRemote } from \"./cmd-remote.js\";\nimport { cmdRestart, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from \"./commands.js\";\nimport { gateModuleSub, gatePacksSub, gateTopLevel } from \"./cli-gate.js\";\nimport { cmdDebug } from \"./debug-command.js\";\nimport { initLocale, stripLangArgs, t } from \"./i18n/index.js\";\nimport { cmdLocale } from \"./locale-command.js\";\nimport { dispatchModuleCommand, isModuleCommand, scanAndWarnUnknown } from \"./module-commands.js\";\nimport { startRemoteAgent } from \"./remote-agent.js\";\nimport { getHelp, playWelcomeAnimation, startRepl } from \"./repl.js\";\nimport { ROOT } from \"./runtime.js\";\nimport { c } from \"./theme.js\";\nimport { dispatchPacksCommand, isPacksCommand } from \"./world-packs.js\";\n\nconst MODE = \"argv\" as const;\n\nasync function printVersion(): Promise<void> {\n await playWelcomeAnimation();\n}\n\nfunction printUsage(): void {\n console.log(`${getHelp(\"argv\")}`);\n}\n\nfunction deny(msg: string): never {\n console.log(msg);\n process.exit(1);\n}\n\nasync function main(): Promise<void> {\n const stripped = stripLangArgs(process.argv.slice(2));\n initLocale({ root: ROOT, flag: stripped.lang });\n const { packsMode, args } = parseGlobalArgv(stripped.args);\n\n if (args.length === 0 && !packsMode) {\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 const warn = await scanAndWarnUnknown();\n if (warn) console.log(warn);\n startRemoteAgent();\n await startRepl();\n return;\n }\n\n if (packsMode) {\n const [subRaw, ...subRest] = args;\n const sub = mapPacksSubAlias(subRaw);\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchPacksCommand(sub, subRest));\n process.exit(0);\n }\n\n const [cmd, ...rest] = args;\n\n if (cmd && ![\"--help\", \"-h\", \"--version\", \"-v\"].includes(cmd)) {\n const topGate = gateTopLevel(cmd, MODE);\n if (topGate) deny(topGate);\n }\n\n const moduleSub = resolveModuleShorthandSub(cmd);\n if (moduleSub) {\n const g = gateModuleSub(moduleSub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(moduleSub, rest));\n process.exit(0);\n }\n\n switch (cmd) {\n case \"--help\":\n case \"-h\":\n case \"help\":\n printUsage();\n break;\n case \"--version\":\n case \"-v\":\n await printVersion();\n break;\n case \"locale\":\n case \"lang\":\n console.log(cmdLocale(rest));\n break;\n case \"debug\":\n console.log(await cmdDebug(rest));\n break;\n case \"status\":\n console.log(await cmdStatus());\n break;\n case \"logs\":\n case \"log\":\n /* channel=repl\uFF1A\u6B63\u5E38\u7531 gateTopLevel \u62E6\u622A\uFF1B\u6B64\u5904\u515C\u5E95 */\n deny(gateTopLevel(\"logs\", MODE) ?? c.yellow(t(\"cli.replOnly\", { cmd: \"logs\" })));\n break;\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 const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\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 console.log(await cmdRemote(rest, { daemonAfterEnroll: true }));\n break;\n default:\n if (isModuleCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gateModuleSub(sub, MODE);\n if (g) deny(g);\n console.log(await dispatchModuleCommand(sub, subRest));\n break;\n }\n if (isPacksCommand(cmd)) {\n const [sub, ...subRest] = rest;\n const g = gatePacksSub(sub, MODE);\n if (g) deny(g);\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": ";AACA,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAC1B,SAAS,YAAY,UAAU,aAAa,WAAW,SAAS,YAAY,iBAAiB;AAC7F,SAAS,eAAe,cAAc,oBAAoB;AAC1D,SAAS,gBAAgB;AACzB,SAAS,YAAY,eAAe,SAAS;AAC7C,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB,iBAAiB,0BAA0B;AAC3E,SAAS,wBAAwB;AACjC,SAAS,SAAS,sBAAsB,iBAAiB;AACzD,SAAS,YAAY;AACrB,SAAS,SAAS;AAClB,SAAS,sBAAsB,sBAAsB;AAErD,MAAM,OAAO;AAEb,eAAe,eAA8B;AAC3C,QAAM,qBAAqB;AAC7B;AAEA,SAAS,aAAmB;AAC1B,UAAQ,IAAI,GAAG,QAAQ,MAAM,CAAC,EAAE;AAClC;AAEA,SAAS,KAAK,KAAoB;AAChC,UAAQ,IAAI,GAAG;AACf,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAe,OAAsB;AACnC,QAAM,WAAW,cAAc,QAAQ,KAAK,MAAM,CAAC,CAAC;AACpD,aAAW,EAAE,MAAM,MAAM,MAAM,SAAS,KAAK,CAAC;AAC9C,QAAM,EAAE,WAAW,KAAK,IAAI,gBAAgB,SAAS,IAAI;AAEzD,MAAI,KAAK,WAAW,KAAK,CAAC,WAAW;AACnC,UAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,cAAc;AAC5D,QAAI,CAAC,qBAAqB,GAAG;AAC3B,YAAM,EAAE,UAAU,IAAI,MAAM,OAAO,aAAa;AAChD,YAAM,UAAU;AAChB,YAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,eAAe;AACxD,sBAAgB;AAAA,IAClB;AACA,UAAM,OAAO,MAAM,mBAAmB;AACtC,QAAI,KAAM,SAAQ,IAAI,IAAI;AAC1B,qBAAiB;AACjB,UAAM,UAAU;AAChB;AAAA,EACF;AAEA,MAAI,WAAW;AACb,UAAM,CAAC,QAAQ,GAAG,OAAO,IAAI;AAC7B,UAAM,MAAM,iBAAiB,MAAM;AACnC,UAAM,IAAI,aAAa,KAAK,IAAI;AAChC,QAAI,EAAG,MAAK,CAAC;AACb,YAAQ,IAAI,MAAM,qBAAqB,KAAK,OAAO,CAAC;AACpD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,CAAC,KAAK,GAAG,IAAI,IAAI;AAEvB,MAAI,OAAO,CAAC,CAAC,UAAU,MAAM,aAAa,IAAI,EAAE,SAAS,GAAG,GAAG;AAC7D,UAAM,UAAU,aAAa,KAAK,IAAI;AACtC,QAAI,QAAS,MAAK,OAAO;AAAA,EAC3B;AAEA,QAAM,YAAY,0BAA0B,GAAG;AAC/C,MAAI,WAAW;AACb,UAAM,IAAI,cAAc,WAAW,IAAI;AACvC,QAAI,EAAG,MAAK,CAAC;AACb,YAAQ,IAAI,MAAM,sBAAsB,WAAW,IAAI,CAAC;AACxD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,KAAK;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,YAAM,aAAa;AACnB;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,cAAQ,IAAI,UAAU,IAAI,CAAC;AAC3B;AAAA,IACF,KAAK;AACH,cAAQ,IAAI,MAAM,SAAS,IAAI,CAAC;AAChC;AAAA,IACF,KAAK;AACH,cAAQ,IAAI,MAAM,UAAU,CAAC;AAC7B;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAEH,WAAK,aAAa,QAAQ,IAAI,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;AAC/E;AAAA,IACF,KAAK;AACH,UAAI,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS;AAClE,gBAAQ,IAAI,MAAM,YAAY,CAAC;AAAA,MACjC,WAAW,KAAK,CAAC,GAAG;AAClB,gBAAQ,IAAI,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC;AAAA,MACrC,OAAO;AACL,gBAAQ,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAAA,MAC5C;AACA;AAAA,IACF,KAAK;AACH,UAAI,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS;AAClE,gBAAQ,IAAI,MAAM,WAAW,CAAC;AAAA,MAChC,WAAW,KAAK,CAAC,GAAG;AAClB,gBAAQ,IAAI,MAAM,QAAQ,KAAK,CAAC,CAAC,CAAC;AAAA,MACpC,OAAO;AACL,gBAAQ,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAAA,MAC3C;AACA;AAAA,IACF,KAAK;AACH,UAAI,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS;AAClE,cAAM,WAAW;AACjB,gBAAQ,IAAI,MAAM,YAAY,CAAC;AAAA,MACjC,WAAW,KAAK,CAAC,GAAG;AAClB,gBAAQ,IAAI,MAAM,WAAW,KAAK,CAAC,CAAC,CAAC;AAAA,MACvC,OAAO;AACL,gBAAQ,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAAA,MAC9C;AACA;AAAA,IACF,KAAK;AACH,cAAQ,IAAI,MAAM,UAAU,IAAI,CAAC;AACjC;AAAA,IACF,KAAK;AAAA,IACL,KAAK,SAAS;AACZ,YAAM,CAAC,KAAK,GAAG,OAAO,IAAI;AAC1B,YAAM,IAAI,aAAa,KAAK,IAAI;AAChC,UAAI,EAAG,MAAK,CAAC;AACb,cAAQ,IAAI,MAAM,qBAAqB,KAAK,OAAO,CAAC;AACpD;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,EAAE,UAAU,IAAI,MAAM,OAAO,aAAa;AAChD,YAAM,UAAU;AAChB;AAAA,IACF;AAAA,IACA,KAAK;AACH,cAAQ,IAAI,MAAM,UAAU,MAAM,EAAE,mBAAmB,KAAK,CAAC,CAAC;AAC9D;AAAA,IACF;AACE,UAAI,gBAAgB,GAAG,GAAG;AACxB,cAAM,CAAC,KAAK,GAAG,OAAO,IAAI;AAC1B,cAAM,IAAI,cAAc,KAAK,IAAI;AACjC,YAAI,EAAG,MAAK,CAAC;AACb,gBAAQ,IAAI,MAAM,sBAAsB,KAAK,OAAO,CAAC;AACrD;AAAA,MACF;AACA,UAAI,eAAe,GAAG,GAAG;AACvB,cAAM,CAAC,KAAK,GAAG,OAAO,IAAI;AAC1B,cAAM,IAAI,aAAa,KAAK,IAAI;AAChC,YAAI,EAAG,MAAK,CAAC;AACb,gBAAQ,IAAI,MAAM,qBAAqB,KAAK,OAAO,CAAC;AACpD;AAAA,MACF;AACA,cAAQ,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC;AACjE,iBAAW;AACX,cAAQ,KAAK,CAAC;AAAA,EAClB;AACA,UAAQ,KAAK,CAAC;AAChB;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,EAAE,IAAI,KAAK,UAAU,EAAE,gBAAgB,EAAE,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACnG,UAAQ,KAAK,CAAC;AAChB,CAAC;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,31 +3,10 @@
|
|
|
3
3
|
* already on disk under `modules/packages/<id>/`.
|
|
4
4
|
*
|
|
5
5
|
* 顶层命令别名:`module` / `mod`(由 main.ts / repl.ts 共同识别)。
|
|
6
|
-
*
|
|
7
|
-
* Subcommands:
|
|
8
|
-
* list List every installed module (reads each
|
|
9
|
-
* modules/packages/<id>/sapi/manifest.json).
|
|
10
|
-
* Marks registry-known modules with `●` and
|
|
11
|
-
* modules from an unknown publisher with `?`.
|
|
12
|
-
* search [id] 拉取 first-party registry 列表;带 id 则查该模块 registry info
|
|
13
|
-
* info <id> Show one module's manifest + on-disk fingerprint
|
|
14
|
-
* verify [id] Recompute the SHA-256 fingerprint of installed
|
|
15
|
-
* modules (id = one; no id = all)
|
|
16
|
-
* install <id> Wrapper around `tools/fetch-module.mjs install`.
|
|
17
|
-
* If `--from` is omitted, the first-party registry
|
|
18
|
-
* is consulted (Tanya7z/sfmc-modules).
|
|
19
|
-
* `--link` 透传:dir 源用 junction/symlink(开发期)。
|
|
20
|
-
* uninstall <id> Remove packages/<id>/ + catalog/lock via fetch-module
|
|
21
|
-
* enable <id> POST /api/sfmc/modules/:id/enable on db-server
|
|
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 一键本地联调
|
|
26
|
-
*
|
|
27
|
-
* The CLI never connects to the network for local ops.
|
|
28
|
-
* `search`/`install`/`uninstall` 需要网络(或本地 cache / --from)。
|
|
29
|
-
* enable/disable go through db-server REST so module-lock.json stays consistent.
|
|
6
|
+
* 子命令通道门禁见 command-surface.ts(dispatch 前由 main/repl 判定)。
|
|
30
7
|
*/
|
|
8
|
+
import { type CommandMode } from "./command-surface.js";
|
|
9
|
+
import { type CliResult } from "./cli-result.js";
|
|
31
10
|
/** 顶层命令名(主名 + 短别名),供 HELP / 补全 / 分发共用。 */
|
|
32
11
|
export declare const MODULE_CMD_NAMES: readonly ["module", "mod"];
|
|
33
12
|
export type ModuleCmdName = (typeof MODULE_CMD_NAMES)[number];
|
|
@@ -35,11 +14,21 @@ export type ModuleCmdName = (typeof MODULE_CMD_NAMES)[number];
|
|
|
35
14
|
export declare function isModuleCommand(cmd: string | undefined): cmd is ModuleCmdName;
|
|
36
15
|
/** 染色后的 HELP 前缀,避免 HELP 硬编码 module/mod。 */
|
|
37
16
|
export declare function paintModuleCmdAlias(paint: (name: string) => string): string;
|
|
38
|
-
/**
|
|
39
|
-
export declare const
|
|
40
|
-
|
|
17
|
+
/** @deprecated 使用 listVisibleModuleSubs(mode);保留全集供调试。 */
|
|
18
|
+
export declare const ALL_MODULE_SUBCOMMANDS: readonly ["list", "search", "install", "uninstall", "verify", "info", "enable", "disable", "link", "create", "dev", "build", "reload"];
|
|
19
|
+
/** 开发者样式子命令(蓝标,非门禁)。 */
|
|
20
|
+
export declare const DEV_ACCENT_MODULE_SUBCOMMANDS: readonly ["create", "dev", "build", "reload"];
|
|
21
|
+
/** @deprecated 使用 ALL_MODULE_SUBCOMMANDS 或 listVisibleModuleSubs。 */
|
|
22
|
+
export declare const MODULE_SUBCOMMANDS: readonly ["list", "search", "install", "uninstall", "verify", "info", "enable", "disable", "link", "create", "dev", "build", "reload"];
|
|
23
|
+
/** @deprecated 使用 DEV_ACCENT_MODULE_SUBCOMMANDS / isDevAccentModuleSub。 */
|
|
24
|
+
export declare const DEV_MODULE_SUBCOMMANDS: readonly ["create", "dev", "build", "reload"];
|
|
25
|
+
export type ModuleSubcommand = (typeof ALL_MODULE_SUBCOMMANDS)[number];
|
|
26
|
+
/** 当前通道下可见的 module 子命令(自动补全 / usage)。 */
|
|
27
|
+
export declare function getVisibleModuleSubcommands(mode: CommandMode): readonly string[];
|
|
28
|
+
/** sub 是否为开发者蓝标(help 着色)。 */
|
|
29
|
+
export declare function isDeveloperSubcommand(sub: string | undefined): boolean;
|
|
41
30
|
/** Usage 行主名|别名(与 MODULE_CMD_NAMES 同源,避免与 HELP 漂移)。 */
|
|
42
|
-
export declare function moduleUsage(): string;
|
|
31
|
+
export declare function moduleUsage(mode?: CommandMode): string;
|
|
43
32
|
export declare function cmdModuleList(_args: string[]): Promise<string>;
|
|
44
33
|
/**
|
|
45
34
|
* Walk `modules/packages/<id>/` and print a one-line yellow warning for each
|
|
@@ -60,17 +49,24 @@ export declare function cmdModuleEnable(args: string[]): Promise<CliResult>;
|
|
|
60
49
|
export declare function cmdModuleDisable(args: string[]): Promise<CliResult>;
|
|
61
50
|
export declare function cmdModuleInstall(args: string[]): Promise<string>;
|
|
62
51
|
/**
|
|
63
|
-
* `mod link [id]
|
|
64
|
-
* - 有 id:等价 `install <id> --link
|
|
65
|
-
* - 无 id
|
|
52
|
+
* `mod link [id] --from dir:…|local:…`
|
|
53
|
+
* - 有 id:等价 `install <id> --link --from …`(必须带 --from)
|
|
54
|
+
* - 无 id:交互询问本地包路径并 link
|
|
66
55
|
*/
|
|
67
56
|
export declare function cmdModuleLink(args: string[]): Promise<string>;
|
|
68
57
|
export declare function cmdModuleUninstall(args: string[]): Promise<string>;
|
|
58
|
+
/**
|
|
59
|
+
* `sfmc mod test` — 委托模块仓的 test runner(node --test + @sfmc-bds/sdk/testing)。
|
|
60
|
+
* 解析 --from local[:path] 规则与 watch 一致;缺省 cwd。
|
|
61
|
+
* 透传 npm test:让模块仓的 `scripts.test` 自己决定怎么跑(node --test / tsx / vitest 等)。
|
|
62
|
+
*/
|
|
63
|
+
export declare function cmdModuleTest(args: string[]): Promise<string>;
|
|
69
64
|
/**
|
|
70
65
|
* 统一分发 module/mod 子命令 —— CLI(`main.ts`)与 REPL(`repl.ts`)共用,
|
|
71
|
-
* 避免两处 switch
|
|
66
|
+
* 避免两处 switch 漂移。
|
|
72
67
|
*
|
|
73
|
-
*
|
|
68
|
+
* 通道门禁(external/repl)由调用方在 dispatch 前经 command-surface 判定;
|
|
69
|
+
* 本函数只负责子命令路由。`remove` 作为 uninstall 的同义别名保留。
|
|
74
70
|
*/
|
|
75
71
|
export declare function dispatchModuleCommand(sub: string | undefined, args: string[]): Promise<string>;
|
|
76
72
|
/** 同步枚举已安装模块 id,供 REPL Tab 补全(不读 fingerprint,尽量轻量)。 */
|
|
@@ -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":"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"}
|
package/dist/module-commands.js
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { configPath, modulePath, readJson } from "@sfmc-bds/sdk/node/config";
|
|
6
|
+
import {
|
|
7
|
+
isDevAccentModuleSub,
|
|
8
|
+
listVisibleModuleSubs
|
|
9
|
+
} from "./command-surface.js";
|
|
10
|
+
import { failResult, okResult } from "./cli-result.js";
|
|
11
|
+
import { t } from "./i18n/index.js";
|
|
12
|
+
import { c } from "./theme.js";
|
|
13
|
+
import { ROOT, resolveFetchModule } from "./runtime.js";
|
|
14
|
+
import { dirFingerprint } from "./module-fingerprint.js";
|
|
15
|
+
import {
|
|
16
|
+
DEFAULT_REGISTRY_REPO,
|
|
17
|
+
DEFAULT_REGISTRY_TAG,
|
|
18
|
+
findUnknownModules,
|
|
19
|
+
resolveRegistryIndex
|
|
20
|
+
} from "./registry.js";
|
|
1
21
|
const MODULE_CMD_NAMES = ["module", "mod"];
|
|
2
22
|
function isModuleCommand(cmd) {
|
|
3
23
|
return !!cmd && MODULE_CMD_NAMES.includes(cmd);
|
|
@@ -5,7 +25,7 @@ function isModuleCommand(cmd) {
|
|
|
5
25
|
function paintModuleCmdAlias(paint) {
|
|
6
26
|
return MODULE_CMD_NAMES.map((name) => paint(name)).join("/");
|
|
7
27
|
}
|
|
8
|
-
const
|
|
28
|
+
const ALL_MODULE_SUBCOMMANDS = [
|
|
9
29
|
"list",
|
|
10
30
|
"search",
|
|
11
31
|
"install",
|
|
@@ -14,32 +34,25 @@ const MODULE_SUBCOMMANDS = [
|
|
|
14
34
|
"info",
|
|
15
35
|
"enable",
|
|
16
36
|
"disable",
|
|
17
|
-
"build",
|
|
18
|
-
"reload",
|
|
19
|
-
"create",
|
|
20
37
|
"link",
|
|
21
|
-
"
|
|
38
|
+
"create",
|
|
39
|
+
"dev",
|
|
40
|
+
"build",
|
|
41
|
+
"reload"
|
|
22
42
|
];
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
import {
|
|
34
|
-
DEFAULT_REGISTRY_REPO,
|
|
35
|
-
DEFAULT_REGISTRY_TAG,
|
|
36
|
-
findUnknownModules,
|
|
37
|
-
resolveRegistryIndex
|
|
38
|
-
} from "./registry.js";
|
|
39
|
-
function moduleUsage() {
|
|
43
|
+
const DEV_ACCENT_MODULE_SUBCOMMANDS = ["create", "dev", "build", "reload"];
|
|
44
|
+
const MODULE_SUBCOMMANDS = ALL_MODULE_SUBCOMMANDS;
|
|
45
|
+
const DEV_MODULE_SUBCOMMANDS = DEV_ACCENT_MODULE_SUBCOMMANDS;
|
|
46
|
+
function getVisibleModuleSubcommands(mode) {
|
|
47
|
+
return listVisibleModuleSubs(mode);
|
|
48
|
+
}
|
|
49
|
+
function isDeveloperSubcommand(sub) {
|
|
50
|
+
return isDevAccentModuleSub(sub);
|
|
51
|
+
}
|
|
52
|
+
function moduleUsage(mode = "argv") {
|
|
40
53
|
return t("mod.usage", {
|
|
41
54
|
cmds: MODULE_CMD_NAMES.join("|"),
|
|
42
|
-
subs:
|
|
55
|
+
subs: getVisibleModuleSubcommands(mode).join("|")
|
|
43
56
|
});
|
|
44
57
|
}
|
|
45
58
|
function modulesDir() {
|
|
@@ -312,14 +325,6 @@ async function cmdModuleInstall(args) {
|
|
|
312
325
|
if (positional.length === 0) {
|
|
313
326
|
return c.yellow(t("mod.install.usage"));
|
|
314
327
|
}
|
|
315
|
-
if (flags.link && !flags.from) {
|
|
316
|
-
const { resolveSfmcModulesRoot, packageDirForId } = await import("./sfmc-modules-root.js");
|
|
317
|
-
const modulesRoot = resolveSfmcModulesRoot();
|
|
318
|
-
if (!modulesRoot) {
|
|
319
|
-
return c.red(t("mod.linkNeedsFrom"));
|
|
320
|
-
}
|
|
321
|
-
flags.from = positional.length === 1 ? `dir:${packageDirForId(modulesRoot, positional[0])}` : `dir:${path.join(modulesRoot, "packages")}`;
|
|
322
|
-
}
|
|
323
328
|
const fetchScript = resolveFetchModule();
|
|
324
329
|
if (!fetchScript) {
|
|
325
330
|
return c.red(t("mod.fetchMissing"));
|
|
@@ -364,8 +369,10 @@ async function cmdModuleLink(args) {
|
|
|
364
369
|
return runModuleLinkWizard();
|
|
365
370
|
}
|
|
366
371
|
const id = positional[0];
|
|
367
|
-
|
|
368
|
-
|
|
372
|
+
if (!flags.from) {
|
|
373
|
+
return c.red(t("mod.linkNeedsFrom"));
|
|
374
|
+
}
|
|
375
|
+
const installArgs = [id, "--link", "--from", flags.from];
|
|
369
376
|
return cmdModuleInstall(installArgs);
|
|
370
377
|
}
|
|
371
378
|
async function cmdModuleUninstall(args) {
|
|
@@ -408,6 +415,46 @@ function parseFlags(args) {
|
|
|
408
415
|
}
|
|
409
416
|
return flags;
|
|
410
417
|
}
|
|
418
|
+
async function cmdModuleTest(args) {
|
|
419
|
+
let fromRaw = null;
|
|
420
|
+
const passthrough = [];
|
|
421
|
+
for (let i = 0; i < args.length; i++) {
|
|
422
|
+
const a = args[i];
|
|
423
|
+
if (a === "--from") {
|
|
424
|
+
fromRaw = args[++i] ?? null;
|
|
425
|
+
} else if (a?.startsWith("--from=")) {
|
|
426
|
+
fromRaw = a.slice("--from=".length);
|
|
427
|
+
} else if (a === "--help" || a === "-h") {
|
|
428
|
+
return c.dim("\u7528\u6CD5: mod test [--from local[:<path>]] [-- <args>]\n \u900F\u4F20\u7ED9\u6A21\u5757\u4ED3\u7684 npm test\u3002");
|
|
429
|
+
} else {
|
|
430
|
+
passthrough.push(a);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
const { resolveLocalModuleRoot } = await import("./module-watch.js");
|
|
434
|
+
const cwd = resolveLocalModuleRoot({ from: fromRaw, cwd: process.cwd() });
|
|
435
|
+
if (!existsSync(cwd)) {
|
|
436
|
+
return c.red(`[mod test] \u8DEF\u5F84\u4E0D\u5B58\u5728: ${cwd}`);
|
|
437
|
+
}
|
|
438
|
+
if (!existsSync(path.join(cwd, "package.json"))) {
|
|
439
|
+
return c.yellow(`[mod test] \u672A\u627E\u5230 package.json: ${cwd}
|
|
440
|
+
\u63D0\u793A\uFF1A\u8FDB\u5165\u6A21\u5757\u4ED3\u6839\u76EE\u5F55\uFF0C\u6216\u7528 --from local:<path> \u6307\u5411\u3002`);
|
|
441
|
+
}
|
|
442
|
+
const isWin = process.platform === "win32";
|
|
443
|
+
const cmd = isWin ? "cmd.exe" : "npm";
|
|
444
|
+
const subArgs = isWin ? ["/c", "npm", "test", "--", ...passthrough] : ["test", "--", ...passthrough];
|
|
445
|
+
return new Promise((resolve) => {
|
|
446
|
+
const proc = spawn(cmd, subArgs, {
|
|
447
|
+
cwd,
|
|
448
|
+
stdio: "inherit",
|
|
449
|
+
env: process.env
|
|
450
|
+
});
|
|
451
|
+
proc.on("exit", (code) => {
|
|
452
|
+
resolve(code === 0 ? "" : `
|
|
453
|
+
[mod test] exit ${code}`);
|
|
454
|
+
});
|
|
455
|
+
proc.on("error", (e) => resolve(c.red(`[mod test] spawn failed: ${e.message}`)));
|
|
456
|
+
});
|
|
457
|
+
}
|
|
411
458
|
async function dispatchModuleCommand(sub, args) {
|
|
412
459
|
switch (sub) {
|
|
413
460
|
case "list":
|
|
@@ -428,12 +475,12 @@ async function dispatchModuleCommand(sub, args) {
|
|
|
428
475
|
case "disable":
|
|
429
476
|
return (await cmdModuleDisable(args)).message;
|
|
430
477
|
case "build": {
|
|
431
|
-
const {
|
|
432
|
-
return (
|
|
478
|
+
const { cmdModuleBuild } = await import("./module-pack-build.js");
|
|
479
|
+
return cmdModuleBuild(args);
|
|
433
480
|
}
|
|
434
481
|
case "reload": {
|
|
435
|
-
const {
|
|
436
|
-
return
|
|
482
|
+
const { cmdModuleReload } = await import("./module-pack-build.js");
|
|
483
|
+
return cmdModuleReload(args);
|
|
437
484
|
}
|
|
438
485
|
case "create": {
|
|
439
486
|
const { runModuleCreateWizard } = await import("./module-wizard.js");
|
|
@@ -445,6 +492,17 @@ async function dispatchModuleCommand(sub, args) {
|
|
|
445
492
|
const { runModuleDevWizard } = await import("./module-wizard.js");
|
|
446
493
|
return runModuleDevWizard();
|
|
447
494
|
}
|
|
495
|
+
case "watch": {
|
|
496
|
+
const { cmdModuleWatch } = await import("./module-watch.js");
|
|
497
|
+
return cmdModuleWatch(args);
|
|
498
|
+
}
|
|
499
|
+
case "test": {
|
|
500
|
+
return cmdModuleTest(args);
|
|
501
|
+
}
|
|
502
|
+
case "publish": {
|
|
503
|
+
const { cmdModulePublish } = await import("./module-publish.js");
|
|
504
|
+
return cmdModulePublish(args);
|
|
505
|
+
}
|
|
448
506
|
default:
|
|
449
507
|
return c.yellow(moduleUsage());
|
|
450
508
|
}
|
|
@@ -459,6 +517,9 @@ function listInstalledModuleIdsSync() {
|
|
|
459
517
|
}
|
|
460
518
|
}
|
|
461
519
|
export {
|
|
520
|
+
ALL_MODULE_SUBCOMMANDS,
|
|
521
|
+
DEV_ACCENT_MODULE_SUBCOMMANDS,
|
|
522
|
+
DEV_MODULE_SUBCOMMANDS,
|
|
462
523
|
MODULE_CMD_NAMES,
|
|
463
524
|
MODULE_SUBCOMMANDS,
|
|
464
525
|
cmdModuleDisable,
|
|
@@ -468,9 +529,12 @@ export {
|
|
|
468
529
|
cmdModuleLink,
|
|
469
530
|
cmdModuleList,
|
|
470
531
|
cmdModuleSearch,
|
|
532
|
+
cmdModuleTest,
|
|
471
533
|
cmdModuleUninstall,
|
|
472
534
|
cmdModuleVerify,
|
|
473
535
|
dispatchModuleCommand,
|
|
536
|
+
getVisibleModuleSubcommands,
|
|
537
|
+
isDeveloperSubcommand,
|
|
474
538
|
isModuleCommand,
|
|
475
539
|
listInstalledModuleIdsSync,
|
|
476
540
|
moduleUsage,
|