@sfmc-bds/cli 0.1.0 → 0.2.0-beta.1
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/log-filter.d.ts +69 -0
- package/dist/log-filter.d.ts.map +1 -0
- package/dist/log-filter.js +150 -0
- package/dist/log-filter.js.map +7 -0
- package/dist/logs.d.ts +33 -8
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +232 -194
- 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 +229 -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 +572 -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 +81 -0
- package/dist/pack-update/version-policy.d.ts.map +1 -0
- package/dist/pack-update/version-policy.js +210 -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 +37 -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/README.md
CHANGED
|
@@ -10,7 +10,13 @@ npm install -g @sfmc-bds/cli
|
|
|
10
10
|
npx @sfmc-bds/cli status
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
服主推荐:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @sfmc-bds/sfmc
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
仅 CLI(不含后端服务)仍可用 `npm install -g @sfmc-bds/cli`,完整平台请装聚合包。
|
|
14
20
|
|
|
15
21
|
## 依赖
|
|
16
22
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI 命令结构化结果 —— 用 ok 布尔表达成败,勿解析着色/本地化文案。
|
|
3
|
+
*/
|
|
4
|
+
export type CliResult = {
|
|
5
|
+
ok: boolean;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function okResult(message: string): CliResult;
|
|
9
|
+
export declare function failResult(message: string): CliResult;
|
|
10
|
+
/** 仅取展示文本(供 console.log / stdout.write)。 */
|
|
11
|
+
export declare function resultText(r: CliResult): string;
|
|
12
|
+
//# sourceMappingURL=cli-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-result.d.ts","sourceRoot":"","sources":["../src/cli-result.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAEnD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAErD;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAE/C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function okResult(message) {
|
|
2
|
+
return { ok: true, message };
|
|
3
|
+
}
|
|
4
|
+
function failResult(message) {
|
|
5
|
+
return { ok: false, message };
|
|
6
|
+
}
|
|
7
|
+
function resultText(r) {
|
|
8
|
+
return r.message;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
failResult,
|
|
12
|
+
okResult,
|
|
13
|
+
resultText
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=cli-result.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/cli-result.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * CLI \u547D\u4EE4\u7ED3\u6784\u5316\u7ED3\u679C \u2014\u2014 \u7528 ok \u5E03\u5C14\u8868\u8FBE\u6210\u8D25\uFF0C\u52FF\u89E3\u6790\u7740\u8272/\u672C\u5730\u5316\u6587\u6848\u3002\n */\nexport type CliResult = {\n ok: boolean;\n message: string;\n};\n\nexport function okResult(message: string): CliResult {\n return { ok: true, message };\n}\n\nexport function failResult(message: string): CliResult {\n return { ok: false, message };\n}\n\n/** \u4EC5\u53D6\u5C55\u793A\u6587\u672C\uFF08\u4F9B console.log / stdout.write\uFF09\u3002 */\nexport function resultText(r: CliResult): string {\n return r.message;\n}\n"],
|
|
5
|
+
"mappings": "AAQO,SAAS,SAAS,SAA4B;AACnD,SAAO,EAAE,IAAI,MAAM,QAAQ;AAC7B;AAEO,SAAS,WAAW,SAA4B;AACrD,SAAO,EAAE,IAAI,OAAO,QAAQ;AAC9B;AAGO,SAAS,WAAW,GAAsB;AAC/C,SAAO,EAAE;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,46 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* commands-behavior-pack.ts —
|
|
2
|
+
* commands-behavior-pack.ts — 模块聚合 BP/RP 的薄包装
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 1. `build` = esbuild 聚合 modules/packages/<id>/sapi/src/index.ts → <ROOT>/build/sfmc-modules-bp/scripts/main.js
|
|
6
|
-
* 然后 spawnService pack-manager assemble-bp 把那个目录装成完整 BP:
|
|
7
|
-
* - 拷 scripts/** 到 outDir/scripts/
|
|
8
|
-
* - 写一份 manifest.json (uuid 由 pack-manager 随机生成)
|
|
9
|
-
* - 写 permissions.json (7 项 @minecraft/*)
|
|
10
|
-
* - 拷 pack_icon.png (如提供)
|
|
11
|
-
* 2. `deploy` = spawnService pack-manager deploy 拷到 worlds/<level>/behavior_packs/<bpName>/
|
|
12
|
-
* 并写 permissions.json。enable/disable packs in world (写 world_behavior_packs.json)
|
|
13
|
-
* 是单独命令 `behavior-pack enable-pack` / `disable-pack` — 因为 BDS 重启后
|
|
14
|
-
* 才会读那个 JSON,与 build/deploy 顺序解耦。
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
export declare const BP_NAME = "sfmc-modules";
|
|
18
|
-
export declare const RP_NAME = "sfmc-modules-rp";
|
|
19
|
-
/** Build 输出根: <ROOT>/build/ */
|
|
20
|
-
export declare function buildRoot(): string;
|
|
21
|
-
/** Build 中间产物的 BP 源目录(已经被 esbuild 写过 scripts/main.js):<ROOT>/build/sfmc-modules-bp/ */
|
|
22
|
-
export declare function bpSrc(): string;
|
|
23
|
-
/** 最终装配好的 BP 目录(assemble-bp 后写到此处,deploy 从这里拷到 BDS):<ROOT>/build/sfmc-modules/ */
|
|
24
|
-
export declare function bpOut(): string;
|
|
25
|
-
/** RP 装配结果:<ROOT>/build/sfmc-modules-rp/ */
|
|
26
|
-
export declare function rpOut(): string;
|
|
27
|
-
/**
|
|
28
|
-
* Walk modules/packages/<id>/sapi/src/index.ts and produce a list of entry
|
|
29
|
-
* paths. Modules without sapi/ are skipped silently.
|
|
30
|
-
*/
|
|
31
|
-
export declare function listEnabledEntries(): Promise<string[]>;
|
|
32
|
-
/**
|
|
33
|
-
* Run esbuild to bundle every enabled module entry into a single script.
|
|
34
|
-
* This function returns the output path. On failure it throws — the CLI
|
|
35
|
-
* surfaces the error message back to the user.
|
|
36
|
-
*
|
|
37
|
-
* NOTE: Commits 4 doesn't pull in esbuild as a runtime dep. This function
|
|
38
|
-
* is therefore only usable from the npm path; the SEA path needs the
|
|
39
|
-
* platform binary embed (Stage K follow-up).
|
|
4
|
+
* CLI 已不再暴露 `behavior-pack`/`bp`;本文件供 wizard / ensurePacksReady 内部调用。
|
|
40
5
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
export
|
|
44
|
-
/**
|
|
45
|
-
export declare function
|
|
6
|
+
import type { CliResult } from "./cli-result.js";
|
|
7
|
+
import { BP_NAME, RP_NAME, DEPLOY_CATALOG_NAME, bpOut, bpSrc, buildRoot, rpOut, buildPacks, deployPacks, ensurePacksReady } from "./pack-lifecycle.js";
|
|
8
|
+
export { BP_NAME, RP_NAME, DEPLOY_CATALOG_NAME, bpOut, bpSrc, buildRoot, rpOut, ensurePacksReady, buildPacks, deployPacks, };
|
|
9
|
+
/** Build the BP + RP via pack-lifecycle(结构化结果,勿解析 message 文案)。 */
|
|
10
|
+
export declare function cmdBehaviorPackBuild(args: string[]): Promise<CliResult>;
|
|
11
|
+
/** Deploy assembled packs + world lists + permission. */
|
|
12
|
+
export declare function cmdBehaviorPackDeploy(args: string[]): Promise<CliResult>;
|
|
13
|
+
/** 兼容旧帮助文案 */
|
|
14
|
+
export declare function behaviorPackUsage(): string;
|
|
46
15
|
//# sourceMappingURL=commands-behavior-pack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands-behavior-pack.d.ts","sourceRoot":"","sources":["../src/commands-behavior-pack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"commands-behavior-pack.d.ts","sourceRoot":"","sources":["../src/commands-behavior-pack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EACL,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,SAAS,EACT,KAAK,EACL,UAAU,EAGV,WAAW,EACX,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,EACP,OAAO,EACP,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,SAAS,EACT,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,CAAC;AAEF,kEAAkE;AAClE,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAE7E;AAED,yDAAyD;AACzD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAE9E;AAED,cAAc;AACd,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -1,160 +1,41 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* commands-behavior-pack.ts — sfmc CLI commands `behavior-pack build` / `deploy`
|
|
3
|
-
*
|
|
4
|
-
* 设计:
|
|
5
|
-
* 1. `build` = esbuild 聚合 modules/packages/<id>/sapi/src/index.ts → <ROOT>/build/sfmc-modules-bp/scripts/main.js
|
|
6
|
-
* 然后 spawnService pack-manager assemble-bp 把那个目录装成完整 BP:
|
|
7
|
-
* - 拷 scripts/** 到 outDir/scripts/
|
|
8
|
-
* - 写一份 manifest.json (uuid 由 pack-manager 随机生成)
|
|
9
|
-
* - 写 permissions.json (7 项 @minecraft/*)
|
|
10
|
-
* - 拷 pack_icon.png (如提供)
|
|
11
|
-
* 2. `deploy` = spawnService pack-manager deploy 拷到 worlds/<level>/behavior_packs/<bpName>/
|
|
12
|
-
* 并写 permissions.json。enable/disable packs in world (写 world_behavior_packs.json)
|
|
13
|
-
* 是单独命令 `behavior-pack enable-pack` / `disable-pack` — 因为 BDS 重启后
|
|
14
|
-
* 才会读那个 JSON,与 build/deploy 顺序解耦。
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
import { configPath, readJson } from "@sfmc-bds/sdk/node/config";
|
|
18
|
-
import { existsSync } from "node:fs";
|
|
19
|
-
import fs from "node:fs/promises";
|
|
20
|
-
import path from "node:path";
|
|
21
|
-
import process from "node:process";
|
|
22
|
-
import PropertiesReader from "properties-reader";
|
|
23
|
-
import { ROOT, spawnServiceSync } from "./runtime.js";
|
|
24
1
|
import { c } from "./theme.js";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Run esbuild to bundle every enabled module entry into a single script.
|
|
69
|
-
* This function returns the output path. On failure it throws — the CLI
|
|
70
|
-
* surfaces the error message back to the user.
|
|
71
|
-
*
|
|
72
|
-
* NOTE: Commits 4 doesn't pull in esbuild as a runtime dep. This function
|
|
73
|
-
* is therefore only usable from the npm path; the SEA path needs the
|
|
74
|
-
* platform binary embed (Stage K follow-up).
|
|
75
|
-
*/
|
|
76
|
-
export async function bundleScripts() {
|
|
77
|
-
const { build } = await import("esbuild");
|
|
78
|
-
const entries = await listEnabledEntries();
|
|
79
|
-
const outFile = path.join(bpSrc(), "scripts", "main.js");
|
|
80
|
-
await fs.mkdir(path.dirname(outFile), { recursive: true });
|
|
81
|
-
if (entries.length === 0) {
|
|
82
|
-
/* Empty bundle is legal: BDS still loads an empty main.js and the BP is
|
|
83
|
-
* valid. The user just won't see anything until they install a module. */
|
|
84
|
-
await fs.writeFile(outFile, "/* no modules enabled */\n", "utf8");
|
|
85
|
-
return outFile;
|
|
86
|
-
}
|
|
87
|
-
await build({
|
|
88
|
-
entryPoints: entries,
|
|
89
|
-
outfile: outFile,
|
|
90
|
-
bundle: true,
|
|
91
|
-
platform: "neutral",
|
|
92
|
-
format: "esm",
|
|
93
|
-
target: "es2022",
|
|
94
|
-
logLevel: "warning",
|
|
95
|
-
sourcemap: false,
|
|
96
|
-
external: ["@minecraft/*"],
|
|
97
|
-
});
|
|
98
|
-
return outFile;
|
|
99
|
-
}
|
|
100
|
-
/** Build the BP from already-bundled scripts + assemble via pack-manager. */
|
|
101
|
-
export async function cmdBehaviorPackBuild(_args) {
|
|
102
|
-
const scriptFile = await bundleScripts();
|
|
103
|
-
if (!existsSync(scriptFile)) {
|
|
104
|
-
return c.red(`bundle failed: ${scriptFile} missing`);
|
|
105
|
-
}
|
|
106
|
-
const proc = spawnServiceSync("pack-manager", [
|
|
107
|
-
"assemble-bp",
|
|
108
|
-
"--src",
|
|
109
|
-
bpSrc(),
|
|
110
|
-
"--out",
|
|
111
|
-
bpOut(),
|
|
112
|
-
"--name",
|
|
113
|
-
BP_NAME,
|
|
114
|
-
"--version",
|
|
115
|
-
"1,0,0",
|
|
116
|
-
"--description",
|
|
117
|
-
"ScriptsForMinecraftServer aggregated behavior pack",
|
|
118
|
-
], { encoding: "utf8" });
|
|
119
|
-
if (proc.status !== 0) {
|
|
120
|
-
const stderr = (proc.stderr ?? "").toString();
|
|
121
|
-
return c.red(`pack-manager assemble-bp failed: ${stderr}`);
|
|
122
|
-
}
|
|
123
|
-
return `${c.green(`built behavior pack at ${bpOut()}`)}\n${(proc.stdout ?? "").toString().trim()}\n`;
|
|
124
|
-
}
|
|
125
|
-
async function getServerProperties(bdsPath) {
|
|
126
|
-
const properties = PropertiesReader({ sourceFile: path.join(bdsPath, "server.properties") });
|
|
127
|
-
const levelName = properties.get("level-name");
|
|
128
|
-
return { levelName };
|
|
129
|
-
}
|
|
130
|
-
/** Deploy the assembled BP + RP into the BDS world's behavior_packs folder. */
|
|
131
|
-
export async function cmdBehaviorPackDeploy(_args) {
|
|
132
|
-
const cfg = readJson(configPath(ROOT, "bds_updater.json"));
|
|
133
|
-
const bdsPath = cfg.bds_path;
|
|
134
|
-
if (!bdsPath) {
|
|
135
|
-
return c.red("deploy: bds_path not configured. Run `sfmc init` first.");
|
|
136
|
-
}
|
|
137
|
-
const p = await getServerProperties(bdsPath);
|
|
138
|
-
const args = [
|
|
139
|
-
"deploy",
|
|
140
|
-
"--bds-root",
|
|
141
|
-
bdsPath,
|
|
142
|
-
"--level",
|
|
143
|
-
p.levelName,
|
|
144
|
-
"--bp-src",
|
|
145
|
-
bpOut(),
|
|
146
|
-
"--bp-name",
|
|
147
|
-
BP_NAME,
|
|
148
|
-
];
|
|
149
|
-
if (existsSync(rpOut())) {
|
|
150
|
-
args.push("--rp-src", rpOut(), "--rp-name", RP_NAME);
|
|
151
|
-
}
|
|
152
|
-
const proc = spawnServiceSync("pack-manager", args, { encoding: "utf8" });
|
|
153
|
-
if (proc.status !== 0) {
|
|
154
|
-
const stderr = (proc.stderr ?? "").toString();
|
|
155
|
-
return c.red(`pack-manager deploy failed: ${stderr}`);
|
|
156
|
-
}
|
|
157
|
-
return `${c.green(`deployed to ${path.join(bdsPath, "worlds", p.levelName)}`)}\n${(proc.stdout ?? "").toString().trim()}\n`;
|
|
158
|
-
}
|
|
159
|
-
void process;
|
|
160
|
-
//# sourceMappingURL=commands-behavior-pack.js.map
|
|
2
|
+
import { t } from "./i18n/index.js";
|
|
3
|
+
import {
|
|
4
|
+
BP_NAME,
|
|
5
|
+
RP_NAME,
|
|
6
|
+
DEPLOY_CATALOG_NAME,
|
|
7
|
+
bpOut,
|
|
8
|
+
bpSrc,
|
|
9
|
+
buildRoot,
|
|
10
|
+
rpOut,
|
|
11
|
+
buildPacks,
|
|
12
|
+
cmdPackBuild,
|
|
13
|
+
cmdPackDeploy,
|
|
14
|
+
deployPacks,
|
|
15
|
+
ensurePacksReady
|
|
16
|
+
} from "./pack-lifecycle.js";
|
|
17
|
+
async function cmdBehaviorPackBuild(args) {
|
|
18
|
+
return cmdPackBuild(args);
|
|
19
|
+
}
|
|
20
|
+
async function cmdBehaviorPackDeploy(args) {
|
|
21
|
+
return cmdPackDeploy(args);
|
|
22
|
+
}
|
|
23
|
+
function behaviorPackUsage() {
|
|
24
|
+
return c.yellow(t("bp.usage"));
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
BP_NAME,
|
|
28
|
+
DEPLOY_CATALOG_NAME,
|
|
29
|
+
RP_NAME,
|
|
30
|
+
behaviorPackUsage,
|
|
31
|
+
bpOut,
|
|
32
|
+
bpSrc,
|
|
33
|
+
buildPacks,
|
|
34
|
+
buildRoot,
|
|
35
|
+
cmdBehaviorPackBuild,
|
|
36
|
+
cmdBehaviorPackDeploy,
|
|
37
|
+
deployPacks,
|
|
38
|
+
ensurePacksReady,
|
|
39
|
+
rpOut
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=commands-behavior-pack.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/commands-behavior-pack.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * commands-behavior-pack.ts \u2014 \u6A21\u5757\u805A\u5408 BP/RP \u7684\u8584\u5305\u88C5\n *\n * CLI \u5DF2\u4E0D\u518D\u66B4\u9732 `behavior-pack`/`bp`\uFF1B\u672C\u6587\u4EF6\u4F9B wizard / ensurePacksReady \u5185\u90E8\u8C03\u7528\u3002\n */\n\nimport type { CliResult } from \"./cli-result.js\";\nimport { c } from \"./theme.js\";\nimport { t } from \"./i18n/index.js\";\nimport {\n BP_NAME,\n RP_NAME,\n DEPLOY_CATALOG_NAME,\n bpOut,\n bpSrc,\n buildRoot,\n rpOut,\n buildPacks,\n cmdPackBuild,\n cmdPackDeploy,\n deployPacks,\n ensurePacksReady,\n} from \"./pack-lifecycle.js\";\n\nexport {\n BP_NAME,\n RP_NAME,\n DEPLOY_CATALOG_NAME,\n bpOut,\n bpSrc,\n buildRoot,\n rpOut,\n ensurePacksReady,\n buildPacks,\n deployPacks,\n};\n\n/** Build the BP + RP via pack-lifecycle\uFF08\u7ED3\u6784\u5316\u7ED3\u679C\uFF0C\u52FF\u89E3\u6790 message \u6587\u6848\uFF09\u3002 */\nexport async function cmdBehaviorPackBuild(args: string[]): Promise<CliResult> {\n return cmdPackBuild(args);\n}\n\n/** Deploy assembled packs + world lists + permission. */\nexport async function cmdBehaviorPackDeploy(args: string[]): Promise<CliResult> {\n return cmdPackDeploy(args);\n}\n\n/** \u517C\u5BB9\u65E7\u5E2E\u52A9\u6587\u6848 */\nexport function behaviorPackUsage(): string {\n return c.yellow(t(\"bp.usage\"));\n}\n"],
|
|
5
|
+
"mappings": "AAOA,SAAS,SAAS;AAClB,SAAS,SAAS;AAClB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgBP,eAAsB,qBAAqB,MAAoC;AAC7E,SAAO,aAAa,IAAI;AAC1B;AAGA,eAAsB,sBAAsB,MAAoC;AAC9E,SAAO,cAAc,IAAI;AAC3B;AAGO,SAAS,oBAA4B;AAC1C,SAAO,EAAE,OAAO,EAAE,UAAU,CAAC;AAC/B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* commands-reload.ts — 模块开发一键重载
|
|
3
|
+
*
|
|
4
|
+
* 语义:build → deploy →(默认)向 BDS 控制台发送 `reload`。
|
|
5
|
+
* 入口:`sfmc mod reload [--build-only]`(不再提供顶层 `sfmc reload`)。
|
|
6
|
+
* `--build-only`:只 build+deploy,不向 BDS 发 reload。
|
|
7
|
+
*/
|
|
8
|
+
export declare function cmdReload(args: string[]): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=commands-reload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-reload.d.ts","sourceRoot":"","sources":["../src/commands-reload.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B/D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { t } from "./i18n/index.js";
|
|
2
|
+
import { c } from "./theme.js";
|
|
3
|
+
async function cmdReload(args) {
|
|
4
|
+
const buildOnly = args.includes("--build-only");
|
|
5
|
+
const { cmdPackBuild, cmdPackDeploy } = await import("./pack-lifecycle.js");
|
|
6
|
+
const parts = [];
|
|
7
|
+
const build = await cmdPackBuild([]);
|
|
8
|
+
parts.push(build.message.trimEnd());
|
|
9
|
+
if (!build.ok) return parts.join("\n") + "\n";
|
|
10
|
+
const deploy = await cmdPackDeploy([]);
|
|
11
|
+
parts.push(deploy.message.trimEnd());
|
|
12
|
+
if (!deploy.ok) return parts.join("\n") + "\n";
|
|
13
|
+
if (buildOnly) {
|
|
14
|
+
parts.push(c.dim(t("reload.buildOnly")));
|
|
15
|
+
return parts.join("\n") + "\n";
|
|
16
|
+
}
|
|
17
|
+
const { services } = await import("./services.js");
|
|
18
|
+
if (!services.bds.running) {
|
|
19
|
+
parts.push(c.yellow(t("reload.bdsNotRunning")));
|
|
20
|
+
return parts.join("\n") + "\n";
|
|
21
|
+
}
|
|
22
|
+
const { cmdSend } = await import("./commands.js");
|
|
23
|
+
parts.push((await cmdSend("bds", "reload")).trimEnd());
|
|
24
|
+
parts.push(c.green(t("reload.sent")));
|
|
25
|
+
return parts.join("\n") + "\n";
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
cmdReload
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=commands-reload.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/commands-reload.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * commands-reload.ts \u2014 \u6A21\u5757\u5F00\u53D1\u4E00\u952E\u91CD\u8F7D\n *\n * \u8BED\u4E49\uFF1Abuild \u2192 deploy \u2192\uFF08\u9ED8\u8BA4\uFF09\u5411 BDS \u63A7\u5236\u53F0\u53D1\u9001 `reload`\u3002\n * \u5165\u53E3\uFF1A`sfmc mod reload [--build-only]`\uFF08\u4E0D\u518D\u63D0\u4F9B\u9876\u5C42 `sfmc reload`\uFF09\u3002\n * `--build-only`\uFF1A\u53EA build+deploy\uFF0C\u4E0D\u5411 BDS \u53D1 reload\u3002\n */\n\nimport { t } from \"./i18n/index.js\";\nimport { c } from \"./theme.js\";\n\nexport async function cmdReload(args: string[]): Promise<string> {\n const buildOnly = args.includes(\"--build-only\");\n const { cmdPackBuild, cmdPackDeploy } = await import(\"./pack-lifecycle.js\");\n\n const parts: string[] = [];\n const build = await cmdPackBuild([]);\n parts.push(build.message.trimEnd());\n if (!build.ok) return parts.join(\"\\n\") + \"\\n\";\n\n const deploy = await cmdPackDeploy([]);\n parts.push(deploy.message.trimEnd());\n if (!deploy.ok) return parts.join(\"\\n\") + \"\\n\";\n\n if (buildOnly) {\n parts.push(c.dim(t(\"reload.buildOnly\")));\n return parts.join(\"\\n\") + \"\\n\";\n }\n\n const { services } = await import(\"./services.js\");\n if (!services.bds.running) {\n parts.push(c.yellow(t(\"reload.bdsNotRunning\")));\n return parts.join(\"\\n\") + \"\\n\";\n }\n\n const { cmdSend } = await import(\"./commands.js\");\n parts.push((await cmdSend(\"bds\", \"reload\")).trimEnd());\n parts.push(c.green(t(\"reload.sent\")));\n return parts.join(\"\\n\") + \"\\n\";\n}\n"],
|
|
5
|
+
"mappings": "AAQA,SAAS,SAAS;AAClB,SAAS,SAAS;AAElB,eAAsB,UAAU,MAAiC;AAC/D,QAAM,YAAY,KAAK,SAAS,cAAc;AAC9C,QAAM,EAAE,cAAc,cAAc,IAAI,MAAM,OAAO,qBAAqB;AAE1E,QAAM,QAAkB,CAAC;AACzB,QAAM,QAAQ,MAAM,aAAa,CAAC,CAAC;AACnC,QAAM,KAAK,MAAM,QAAQ,QAAQ,CAAC;AAClC,MAAI,CAAC,MAAM,GAAI,QAAO,MAAM,KAAK,IAAI,IAAI;AAEzC,QAAM,SAAS,MAAM,cAAc,CAAC,CAAC;AACrC,QAAM,KAAK,OAAO,QAAQ,QAAQ,CAAC;AACnC,MAAI,CAAC,OAAO,GAAI,QAAO,MAAM,KAAK,IAAI,IAAI;AAE1C,MAAI,WAAW;AACb,UAAM,KAAK,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AACvC,WAAO,MAAM,KAAK,IAAI,IAAI;AAAA,EAC5B;AAEA,QAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AACjD,MAAI,CAAC,SAAS,IAAI,SAAS;AACzB,UAAM,KAAK,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;AAC9C,WAAO,MAAM,KAAK,IAAI,IAAI;AAAA,EAC5B;AAEA,QAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,eAAe;AAChD,QAAM,MAAM,MAAM,QAAQ,OAAO,QAAQ,GAAG,QAAQ,CAAC;AACrD,QAAM,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AACpC,SAAO,MAAM,KAAK,IAAI,IAAI;AAC5B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/commands.d.ts
CHANGED
|
@@ -7,5 +7,12 @@ export declare function cmdSend(raw: string, message: string): Promise<string>;
|
|
|
7
7
|
export declare function cmdRestart(raw: string): Promise<string>;
|
|
8
8
|
export declare function cmdStartAll(): Promise<string>;
|
|
9
9
|
export declare function cmdStopAll(): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* BDS 更新:子进程始终 --no-start,由 sfmc 监督器接管启停与日志。
|
|
12
|
+
* (updater 内 detached 自启会导致 REPL 丢 PID / 无 stdout)
|
|
13
|
+
*
|
|
14
|
+
* 不停服预操作:真正需要更新时由 updater 停服;已是最新则不影响正在跑的 BDS。
|
|
15
|
+
* 更新成功后若未指定 --no-start,再由监督器 `start bds`(接管 PID + 日志管道)。
|
|
16
|
+
*/
|
|
10
17
|
export declare function cmdUpdate(args?: string[]): Promise<string>;
|
|
11
18
|
//# sourceMappingURL=commands.d.ts.map
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAmBhF,wBAAgB,SAAS,IAAI,MAAM,CAiBlC;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,CA+C7F;AAKD,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3D;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe1D;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY3E;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAIlD;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DpE"}
|