@sfmc-bds/cli 0.1.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 +22 -0
- package/dist/commands-behavior-pack.d.ts +46 -0
- package/dist/commands-behavior-pack.d.ts.map +1 -0
- package/dist/commands-behavior-pack.js +160 -0
- package/dist/commands-behavior-pack.js.map +1 -0
- package/dist/commands.d.ts +11 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +191 -0
- package/dist/commands.js.map +1 -0
- package/dist/dispatcher.d.ts +13 -0
- package/dist/dispatcher.d.ts.map +1 -0
- package/dist/dispatcher.js +23 -0
- package/dist/dispatcher.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/logs.d.ts +35 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +202 -0
- package/dist/logs.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +189 -0
- package/dist/main.js.map +1 -0
- package/dist/module-commands.d.ts +39 -0
- package/dist/module-commands.d.ts.map +1 -0
- package/dist/module-commands.js +367 -0
- package/dist/module-commands.js.map +1 -0
- package/dist/registry.d.ts +53 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +125 -0
- package/dist/registry.js.map +1 -0
- package/dist/remote-agent.d.ts +18 -0
- package/dist/remote-agent.d.ts.map +1 -0
- package/dist/remote-agent.js +212 -0
- package/dist/remote-agent.js.map +1 -0
- package/dist/repl.d.ts +9 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +652 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime.d.ts +28 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +74 -0
- package/dist/runtime.js.map +1 -0
- package/dist/services.d.ts +61 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +259 -0
- package/dist/services.js.map +1 -0
- package/dist/terminal.d.ts +3 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/terminal.js +178 -0
- package/dist/terminal.js.map +1 -0
- package/dist/theme.d.ts +33 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +55 -0
- package/dist/theme.js.map +1 -0
- package/dist/wizard.d.ts +2 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +475 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +65 -0
package/dist/wizard.js
ADDED
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { confirm, intro, isCancel, multiselect, note, outro, select, tasks, text } from "@clack/prompts";
|
|
2
|
+
import { configPath, modulePath, patchJson as patchConfig, readJson, writeJson, } from "@sfmc-bds/sdk/node/config";
|
|
3
|
+
import JSZip from "jszip";
|
|
4
|
+
import { execFileSync } from "node:child_process";
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { getAsset } from "node:sea";
|
|
8
|
+
import { IS_SEA, ROOT, spawnService } from "./runtime.js";
|
|
9
|
+
import { c } from "./theme.js";
|
|
10
|
+
/** 仓顶服务 config 浅合并写盘。委托 SDK 统一实现,禁止自己 mkdir+writeFileSync。 */
|
|
11
|
+
function patchJson(rootDir, name, updates) {
|
|
12
|
+
patchConfig(configPath(rootDir, name), updates);
|
|
13
|
+
}
|
|
14
|
+
function ensureDirectory(directory) {
|
|
15
|
+
try {
|
|
16
|
+
fs.mkdirSync(directory, { recursive: true });
|
|
17
|
+
return fs.statSync(directory).isDirectory();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function pickDirectory(message, defaultDirectory) {
|
|
24
|
+
const method = await select({
|
|
25
|
+
message,
|
|
26
|
+
options: [
|
|
27
|
+
{ value: "text", label: "Enter path", hint: defaultDirectory },
|
|
28
|
+
{ value: "browse", label: "Browse...", hint: "open system folder picker" },
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
if (isCancel(method))
|
|
32
|
+
return defaultDirectory;
|
|
33
|
+
if (method === "browse")
|
|
34
|
+
return pickDirectoryDialog(message, defaultDirectory) ?? defaultDirectory;
|
|
35
|
+
const selected = await text({ message, initialValue: defaultDirectory });
|
|
36
|
+
return isCancel(selected) || !selected ? defaultDirectory : selected;
|
|
37
|
+
}
|
|
38
|
+
function pickDirectoryDialog(title, defaultDirectory) {
|
|
39
|
+
const escape = (value) => value.replace(/'/g, "''");
|
|
40
|
+
const script = [
|
|
41
|
+
"Add-Type -AssemblyName System.Windows.Forms",
|
|
42
|
+
"$dialog = New-Object System.Windows.Forms.FolderBrowserDialog",
|
|
43
|
+
`$dialog.Description = '${escape(title)}'`,
|
|
44
|
+
`$dialog.SelectedPath = '${escape(defaultDirectory)}'`,
|
|
45
|
+
"if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { Write-Output $dialog.SelectedPath }",
|
|
46
|
+
].join("; ");
|
|
47
|
+
try {
|
|
48
|
+
const output = execFileSync("powershell.exe", ["-NoProfile", "-STA", "-Command", script], {
|
|
49
|
+
encoding: "utf-8",
|
|
50
|
+
timeout: 30_000,
|
|
51
|
+
windowsHide: true,
|
|
52
|
+
});
|
|
53
|
+
return output.trim() || null;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function waitForHealth(port, ms = 15000) {
|
|
60
|
+
const t = Date.now();
|
|
61
|
+
while (Date.now() - t < ms) {
|
|
62
|
+
try {
|
|
63
|
+
if ((await fetch(`http://127.0.0.1:${port}/api/health`)).ok)
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* retry */
|
|
68
|
+
}
|
|
69
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
async function extractZip(data, destDir, options = { overwrite: true }) {
|
|
74
|
+
const zip = await JSZip.loadAsync(data);
|
|
75
|
+
const files = [];
|
|
76
|
+
const safeJoin = (base, relative) => {
|
|
77
|
+
const fullPath = path.resolve(base, relative);
|
|
78
|
+
const relativePath = path.relative(base, fullPath);
|
|
79
|
+
if (relativePath === "" || relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
|
|
80
|
+
throw new Error(`Path traversal detected: ${relative}`);
|
|
81
|
+
}
|
|
82
|
+
return fullPath;
|
|
83
|
+
};
|
|
84
|
+
const concurrency = 10;
|
|
85
|
+
const entries = Object.keys(zip.files);
|
|
86
|
+
const chunks = [];
|
|
87
|
+
for (let i = 0; i < entries.length; i += concurrency) {
|
|
88
|
+
chunks.push(entries.slice(i, i + concurrency));
|
|
89
|
+
}
|
|
90
|
+
for (const chunk of chunks) {
|
|
91
|
+
await Promise.all(chunk.map(async (relPath) => {
|
|
92
|
+
if (relPath.endsWith("/"))
|
|
93
|
+
return;
|
|
94
|
+
const file = zip.file(relPath);
|
|
95
|
+
if (!file)
|
|
96
|
+
return;
|
|
97
|
+
const targetPath = safeJoin(destDir, relPath);
|
|
98
|
+
if (!options.overwrite && fs.existsSync(targetPath)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });
|
|
102
|
+
const content = await file.async("nodebuffer");
|
|
103
|
+
await fs.promises.writeFile(targetPath, content);
|
|
104
|
+
files.push(relPath);
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
return files;
|
|
108
|
+
}
|
|
109
|
+
/** SEA asset: { zipBaseName, targetDirRelative, SEA_asset_name } */
|
|
110
|
+
const ASSETS = [
|
|
111
|
+
{ target: "configs", npmTarget: "configs", asset: "configs_default" },
|
|
112
|
+
{ target: "modules", npmTarget: "modules", asset: "modules" },
|
|
113
|
+
];
|
|
114
|
+
function missingRuntimeAssets(rootDir) {
|
|
115
|
+
return ASSETS.flatMap(({ target, npmTarget }) => {
|
|
116
|
+
const directory = path.join(rootDir, npmTarget);
|
|
117
|
+
try {
|
|
118
|
+
return fs.statSync(directory).isDirectory() && fs.readdirSync(directory).length > 0 ? [] : [target];
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return [target];
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async function runBdsUpdate(rootDir, channel) {
|
|
126
|
+
const child = spawnService("update", [`--channel=${channel}`, "--force", "--no-start"], {
|
|
127
|
+
cwd: rootDir,
|
|
128
|
+
stdio: "pipe",
|
|
129
|
+
});
|
|
130
|
+
const output = [];
|
|
131
|
+
child.stdout?.on("data", (data) => output.push(data.toString()));
|
|
132
|
+
child.stderr?.on("data", (data) => output.push(data.toString()));
|
|
133
|
+
return new Promise((resolve) => {
|
|
134
|
+
child.once("error", (error) => resolve({ code: null, output: `${output.join("")}${error.message}` }));
|
|
135
|
+
child.once("close", (code) => resolve({ code, output: output.join("") }));
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
async function prepareRuntimeAssets(rootDir) {
|
|
139
|
+
if (!IS_SEA) {
|
|
140
|
+
const missing = missingRuntimeAssets(rootDir);
|
|
141
|
+
if (missing.length > 0) {
|
|
142
|
+
throw new Error(`npm runtime is missing required directories: ${missing.join(", ")}`);
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
await tasks([
|
|
147
|
+
{
|
|
148
|
+
title: "Extracting bundled assets",
|
|
149
|
+
task: async (message) => {
|
|
150
|
+
for (const { target, asset } of ASSETS) {
|
|
151
|
+
message(`Extracting ${target}`);
|
|
152
|
+
const assetBuffer = getAsset(asset);
|
|
153
|
+
if (!assetBuffer)
|
|
154
|
+
throw new Error(`Bundled asset not found: ${asset}`);
|
|
155
|
+
const destDir = path.join(rootDir, target);
|
|
156
|
+
if (!ensureDirectory(destDir))
|
|
157
|
+
throw new Error(`Cannot create asset directory: ${destDir}`);
|
|
158
|
+
await extractZip(Buffer.from(assetBuffer), destDir, { overwrite: true });
|
|
159
|
+
}
|
|
160
|
+
return "Assets extracted";
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
export async function runWizard() {
|
|
166
|
+
intro(c.bold("Setup Wizard =D"));
|
|
167
|
+
const hasConfigs = fs.existsSync(configPath(ROOT, "db_config.json"));
|
|
168
|
+
if (hasConfigs) {
|
|
169
|
+
const r = await confirm({ message: "Configs already exist. Re-run setup?", initialValue: false });
|
|
170
|
+
if (isCancel(r) || !r) {
|
|
171
|
+
outro(c.dim("Setup skipped"));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Step 1: Runtime Environment
|
|
176
|
+
const rootDir = ROOT;
|
|
177
|
+
note(c.text(`Runtime root: ${rootDir}`), "Step 1 - Runtime Environment");
|
|
178
|
+
try {
|
|
179
|
+
await prepareRuntimeAssets(rootDir);
|
|
180
|
+
patchJson(rootDir, "runtime.json", { runtime_root: rootDir, initialized_at: new Date().toISOString() });
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
outro(c.red(`Runtime preparation failed: ${error.message}`));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// Step 2: External runtime paths
|
|
187
|
+
note(c.text("Select paths for BDS, Database, and LLBOT"), "Step 2 - External Runtimes");
|
|
188
|
+
const bdsResolved = await pickDirectory("BDS installation directory", path.join(rootDir, "BDS"));
|
|
189
|
+
if (!ensureDirectory(bdsResolved)) {
|
|
190
|
+
outro(c.red(`Cannot create BDS installation directory: ${bdsResolved}`));
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
let llbotPath;
|
|
194
|
+
const llbotEnabled = await confirm({ message: "Enable LLBot (QQ bridge)?", initialValue: false });
|
|
195
|
+
if (!isCancel(llbotEnabled) && llbotEnabled) {
|
|
196
|
+
const picked = await pickDirectory("LLBot runtime directory", path.join(rootDir, "LLBOT"));
|
|
197
|
+
if (ensureDirectory(picked)) {
|
|
198
|
+
llbotPath = picked;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
llbotPath = path.join(rootDir, "LLBOT");
|
|
202
|
+
note(c.text(`Using default: ${llbotPath}`), "TIPS");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const dbDirInput = await pickDirectory("Database storage directory", path.join(rootDir, "data"));
|
|
206
|
+
const dbDir = ensureDirectory(dbDirInput) ? dbDirInput : path.join(rootDir, "data");
|
|
207
|
+
if (dbDir !== dbDirInput) {
|
|
208
|
+
note(c.text(`Using default: ${dbDir}`), "TIPS");
|
|
209
|
+
}
|
|
210
|
+
const dbPortRaw = await text({
|
|
211
|
+
message: "Database server port:",
|
|
212
|
+
initialValue: "3001",
|
|
213
|
+
validate: (v) => {
|
|
214
|
+
const n = parseInt(v, 10);
|
|
215
|
+
if (isNaN(n) || n < 1024 || n > 65535)
|
|
216
|
+
return "Enter 1024–65535";
|
|
217
|
+
if (v.length === 0)
|
|
218
|
+
return `Value is required!`;
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
const dbPort = isCancel(dbPortRaw) ? 3001 : parseInt(dbPortRaw, 10);
|
|
222
|
+
// Step 4: BDS environment
|
|
223
|
+
const bdsExe = path.join(bdsResolved, "bedrock_server.exe");
|
|
224
|
+
const bdsExists = fs.existsSync(bdsExe);
|
|
225
|
+
note(bdsExists ? c.green(`Found at ${bdsResolved}`) : c.yellow(`Not found at ${bdsResolved}`), "Step 3 - BDS Environment");
|
|
226
|
+
const EULA = await confirm({
|
|
227
|
+
message: "Do you agree to the EULA(https://www.minecraft.net/en-us/eula) published by Mojang? You must agree to it before you can use this program.",
|
|
228
|
+
initialValue: false,
|
|
229
|
+
});
|
|
230
|
+
if (isCancel(EULA) || !EULA) {
|
|
231
|
+
outro(c.yellow("Disagreed."));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
let downloadBds = false;
|
|
235
|
+
let bdsChannel = "release";
|
|
236
|
+
let backupDir = path.join(path.dirname(bdsResolved), "backups");
|
|
237
|
+
let preserve = [];
|
|
238
|
+
if (!bdsExists) {
|
|
239
|
+
const d = await confirm({ message: "Download BDS now?", initialValue: true });
|
|
240
|
+
if (!isCancel(d) && d) {
|
|
241
|
+
const ch = await select({
|
|
242
|
+
message: "Select channel:",
|
|
243
|
+
options: [
|
|
244
|
+
{ value: "release", label: "Release", hint: "stable" },
|
|
245
|
+
{ value: "preview", label: "Preview", hint: "may be unstable" },
|
|
246
|
+
],
|
|
247
|
+
});
|
|
248
|
+
if (!isCancel(ch)) {
|
|
249
|
+
bdsChannel = ch;
|
|
250
|
+
downloadBds = true;
|
|
251
|
+
}
|
|
252
|
+
if (!ensureDirectory(backupDir)) {
|
|
253
|
+
outro(c.red(`Cannot create BDS backup directory: ${backupDir}`));
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
backupDir = await pickDirectory("BDS backup directory", backupDir);
|
|
259
|
+
const pr = await multiselect({
|
|
260
|
+
message: "Files to preserve on update(When updates are enabled next time):",
|
|
261
|
+
options: [
|
|
262
|
+
{ value: "server.properties", label: "server.properties", hint: "server config", disabled: true },
|
|
263
|
+
{ value: "whitelist.json", label: "whitelist.json" },
|
|
264
|
+
{ value: "permissions.json", label: "permissions.json" },
|
|
265
|
+
{ value: "allowlist.json", label: "allowlist.json" },
|
|
266
|
+
{ value: "worlds", label: "worlds/", hint: "world data" },
|
|
267
|
+
{ value: "config", label: "config/", hint: "config directory", disabled: true },
|
|
268
|
+
],
|
|
269
|
+
required: false,
|
|
270
|
+
});
|
|
271
|
+
if (!isCancel(pr))
|
|
272
|
+
preserve = pr;
|
|
273
|
+
note(c.yellow("If could not find BDS runtime, updater will be started later.\n You can configure updater later in configs/bds_updater.json"), "TIPS");
|
|
274
|
+
// Step 5: Module initialization
|
|
275
|
+
const catalog = readJson(modulePath(rootDir, "catalog.json")) ?? {};
|
|
276
|
+
const catalogModules = [];
|
|
277
|
+
if (Array.isArray(catalog.modules)) {
|
|
278
|
+
for (const m of catalog.modules) {
|
|
279
|
+
const entry = m;
|
|
280
|
+
catalogModules.push({
|
|
281
|
+
id: String(entry.id ?? ""),
|
|
282
|
+
name: String(entry.name ?? entry.id ?? ""),
|
|
283
|
+
type: String(entry.type ?? "feature"),
|
|
284
|
+
description: String(entry.description ?? ""),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
note(c.text(catalogModules.length > 0 ? `Found ${catalogModules.length} optional modules` : "No modules catalog found"), "Step 4 - Modules");
|
|
289
|
+
let selectedModules = [];
|
|
290
|
+
const coreMd = [];
|
|
291
|
+
const featMd = [];
|
|
292
|
+
catalogModules.forEach((k) => {
|
|
293
|
+
if (k.type === "core") {
|
|
294
|
+
coreMd.push({
|
|
295
|
+
value: k.id,
|
|
296
|
+
label: `${k.name} (${k.type})`,
|
|
297
|
+
hint: String(k.description ?? "(empty)"),
|
|
298
|
+
disabled: true,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
else if (k.type === "feature") {
|
|
302
|
+
featMd.push({
|
|
303
|
+
value: k.id,
|
|
304
|
+
label: `${k.name} (${k.type})`,
|
|
305
|
+
hint: String(k.description ?? "(empty)"),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
if (catalogModules.length > 0) {
|
|
310
|
+
const r = await multiselect({
|
|
311
|
+
message: "Enable modules:",
|
|
312
|
+
// merge core and feature module option arrays into a single options array
|
|
313
|
+
options: [...coreMd, ...featMd],
|
|
314
|
+
required: false,
|
|
315
|
+
});
|
|
316
|
+
if (!isCancel(r))
|
|
317
|
+
selectedModules = r;
|
|
318
|
+
}
|
|
319
|
+
// Write paths into configs
|
|
320
|
+
const t = [
|
|
321
|
+
{
|
|
322
|
+
title: "Updating configs",
|
|
323
|
+
task: () => {
|
|
324
|
+
const slashPath = (value) => value.replace(/\\/g, "/");
|
|
325
|
+
patchJson(rootDir, "db_config.json", {
|
|
326
|
+
db_port: dbPort,
|
|
327
|
+
dbDir: slashPath(path.relative(rootDir, path.join(dbDir, "sfmc_data.db"))),
|
|
328
|
+
modulesDir: "modules",
|
|
329
|
+
});
|
|
330
|
+
const llbotOn = !!llbotEnabled && !!llbotPath;
|
|
331
|
+
patchJson(rootDir, "qq_config.json", {
|
|
332
|
+
llbot_enabled: llbotOn,
|
|
333
|
+
llbot_path: llbotPath ? slashPath(llbotPath) : "",
|
|
334
|
+
llbot_cwd: llbotPath ? slashPath(llbotPath) : "",
|
|
335
|
+
});
|
|
336
|
+
patchJson(rootDir, "bds_updater.json", {
|
|
337
|
+
bds_path: slashPath(bdsResolved),
|
|
338
|
+
channel: bdsChannel,
|
|
339
|
+
backup_dir: slashPath(backupDir),
|
|
340
|
+
preserve,
|
|
341
|
+
qq_notify: llbotOn,
|
|
342
|
+
});
|
|
343
|
+
return "Configs updated";
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
title: "Updating module state",
|
|
348
|
+
task: async () => {
|
|
349
|
+
const lock = readJson(modulePath(rootDir, "module-lock.json")) ?? {
|
|
350
|
+
version: 1,
|
|
351
|
+
modules: {},
|
|
352
|
+
};
|
|
353
|
+
if (!lock.modules)
|
|
354
|
+
lock.modules = {};
|
|
355
|
+
const now = Date.now();
|
|
356
|
+
for (const id of selectedModules)
|
|
357
|
+
lock.modules[id] = { enabled: true, updatedAt: now };
|
|
358
|
+
writeJson(modulePath(rootDir, "module-lock.json"), lock);
|
|
359
|
+
return "Module state updated";
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
title: "Initializing database",
|
|
364
|
+
task: async () => {
|
|
365
|
+
const child = spawnService("db", [], {
|
|
366
|
+
cwd: rootDir,
|
|
367
|
+
stdio: "ignore",
|
|
368
|
+
env: { ...process.env, DB_PORT: String(dbPort) },
|
|
369
|
+
});
|
|
370
|
+
if (!(await waitForHealth(dbPort))) {
|
|
371
|
+
child.kill("SIGTERM");
|
|
372
|
+
return "Database startup timed out";
|
|
373
|
+
}
|
|
374
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
375
|
+
child.kill("SIGTERM");
|
|
376
|
+
setTimeout(() => child.kill("SIGKILL"), 3000).unref();
|
|
377
|
+
return "Database initialized";
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
];
|
|
381
|
+
if (downloadBds) {
|
|
382
|
+
t.push({
|
|
383
|
+
title: "Downloading BDS",
|
|
384
|
+
task: async () => {
|
|
385
|
+
const result = await runBdsUpdate(rootDir, bdsChannel);
|
|
386
|
+
if (result.code !== 0) {
|
|
387
|
+
return "Downloaded Failure.";
|
|
388
|
+
}
|
|
389
|
+
return "BDS downloaded";
|
|
390
|
+
},
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
try {
|
|
394
|
+
await tasks(t);
|
|
395
|
+
}
|
|
396
|
+
catch (e) {
|
|
397
|
+
outro(c.red(`Error: ${e.message}`));
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
/* install → build → deploy chain. If the user skipped module selection
|
|
401
|
+
* earlier, this still runs `behavior-pack build` + `deploy` so the BP/
|
|
402
|
+
* RP folders exist on disk — BDS just sees an empty script. */
|
|
403
|
+
await runInstallBuildDeploy(rootDir, selectedModules, bdsResolved);
|
|
404
|
+
outro(c.green("Done! Run help to learn managing."));
|
|
405
|
+
}
|
|
406
|
+
async function runInstallBuildDeploy(rootDir, selectedModules, bdsResolved) {
|
|
407
|
+
if (selectedModules.length > 0) {
|
|
408
|
+
const fetchScript = path.join(rootDir, "tools", "fetch-module.mjs");
|
|
409
|
+
if (fs.existsSync(fetchScript)) {
|
|
410
|
+
const installT = [
|
|
411
|
+
{
|
|
412
|
+
title: `Installing ${selectedModules.length} module(s) from first-party registry`,
|
|
413
|
+
task: async () => {
|
|
414
|
+
execFileSync(process.execPath, [fetchScript, "install", ...selectedModules], {
|
|
415
|
+
cwd: rootDir,
|
|
416
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
417
|
+
});
|
|
418
|
+
return `${selectedModules.length} installed`;
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
];
|
|
422
|
+
try {
|
|
423
|
+
await tasks(installT);
|
|
424
|
+
}
|
|
425
|
+
catch (e) {
|
|
426
|
+
note(c.yellow(`install failed: ${e.message}\nYou can retry with: sfmc module install <id>`));
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
note(c.yellow(`tools/fetch-module.mjs missing — run \`sfmc module install <id>\` later for each of: ${selectedModules.join(", ")}`));
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
note(c.dim("No modules selected — behavior pack will be empty until you install one with `sfmc module install <id>`."));
|
|
435
|
+
}
|
|
436
|
+
const { cmdBehaviorPackBuild, cmdBehaviorPackDeploy } = await import("./commands-behavior-pack.js");
|
|
437
|
+
const buildT = [
|
|
438
|
+
{
|
|
439
|
+
title: "Building behavior pack",
|
|
440
|
+
task: async () => {
|
|
441
|
+
const out = await cmdBehaviorPackBuild([]);
|
|
442
|
+
if (out.startsWith("[31m"))
|
|
443
|
+
throw new Error(out);
|
|
444
|
+
return out;
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
];
|
|
448
|
+
try {
|
|
449
|
+
await tasks(buildT);
|
|
450
|
+
}
|
|
451
|
+
catch (e) {
|
|
452
|
+
note(c.yellow(`build failed: ${e.message}\nRun \`sfmc behavior-pack build\` later to retry.`));
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
const deployT = [
|
|
456
|
+
{
|
|
457
|
+
title: `Deploying to ${bdsResolved}`,
|
|
458
|
+
task: async () => {
|
|
459
|
+
const out = await cmdBehaviorPackDeploy([]);
|
|
460
|
+
if (out.startsWith("[31m"))
|
|
461
|
+
throw new Error(out);
|
|
462
|
+
return out;
|
|
463
|
+
},
|
|
464
|
+
},
|
|
465
|
+
];
|
|
466
|
+
try {
|
|
467
|
+
await tasks(deployT);
|
|
468
|
+
note(c.green("Restart BDS to load the new behavior pack."));
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
note(c.yellow(`deploy failed: ${e.message}\nRun \`sfmc behavior-pack deploy\` after fixing bds_root in configs/.`));
|
|
472
|
+
}
|
|
473
|
+
void rootDir;
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sfmc-bds/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "SFMC management CLI — REPL, service supervisor, module install, behavior-pack build/deploy",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"author": "Shiroha7z",
|
|
8
|
+
"homepage": "https://github.com/DogeLakeDev/ScriptsForMinecraftServer/tree/main/sfmc#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/DogeLakeDev/ScriptsForMinecraftServer.git",
|
|
12
|
+
"directory": "sfmc"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/DogeLakeDev/ScriptsForMinecraftServer/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"minecraft-bedrock",
|
|
19
|
+
"sfmc",
|
|
20
|
+
"cli",
|
|
21
|
+
"scriptsforminecraftserver"
|
|
22
|
+
],
|
|
23
|
+
"main": "dist/index.js",
|
|
24
|
+
"types": "dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./cli": {
|
|
31
|
+
"types": "./dist/main.d.ts",
|
|
32
|
+
"import": "./dist/main.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"bin": {
|
|
36
|
+
"sfmc": "./dist/main.js"
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"README.md"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"start": "node ./dist/main.js",
|
|
44
|
+
"build": "tsc -p tsconfig.json",
|
|
45
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
46
|
+
"dev": "tsx src/main.ts",
|
|
47
|
+
"prepublishOnly": "npm run build"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@sfmc-bds/sdk": "^0.1.0",
|
|
51
|
+
"@clack/prompts": "^1.7.0",
|
|
52
|
+
"chalk": "^5.4.1",
|
|
53
|
+
"cli-progress": "^3.12.0",
|
|
54
|
+
"jsonc-parser": "^3.3.1",
|
|
55
|
+
"jszip": "^3.10.1",
|
|
56
|
+
"ws": "^8.21.1"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=22.13.0"
|
|
60
|
+
},
|
|
61
|
+
"publishConfig": {
|
|
62
|
+
"access": "public",
|
|
63
|
+
"registry": "https://registry.npmjs.org/"
|
|
64
|
+
}
|
|
65
|
+
}
|