57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
const fs = require("fs");
|
|
const path = require("path");
|
|
const { spawnSync } = require("child_process");
|
|
|
|
const root = path.join(__dirname, "..");
|
|
const checks = [
|
|
"scripts/verify-preflight.js",
|
|
"scripts/verify-webui.js",
|
|
"scripts/verify-web-auth.js",
|
|
"scripts/verify-feedback-system.js",
|
|
"scripts/verify-placeholders.js",
|
|
"scripts/verify-plugin-update-preserves-data.js",
|
|
"scripts/verify-safe-files.js",
|
|
"scripts/verify-upload-security.js",
|
|
"plugins/okf/tests/verify.js",
|
|
"plugins/lumi_ai/tests/verify.js",
|
|
"plugins/lumi_ai/tests/verify-tools.js",
|
|
"plugins/lumi_ai_web_search/tests/verify.js",
|
|
"scripts/verify-assistant-panels.js",
|
|
"scripts/verify-command-preview-confirmations.js",
|
|
"scripts/verify-destructive-actions.js",
|
|
"scripts/verify-overlays.js",
|
|
"scripts/verify-webhooks.js"
|
|
];
|
|
|
|
function listJavaScript(directory, output = []) {
|
|
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
if (["node_modules", ".git"].includes(entry.name) || entry.name.startsWith(".tmp-")) continue;
|
|
const target = path.join(directory, entry.name);
|
|
if (entry.isDirectory()) listJavaScript(target, output);
|
|
else if (entry.name.endsWith(".js")) output.push(target);
|
|
}
|
|
return output;
|
|
}
|
|
|
|
function run(label, args) {
|
|
console.log(`\n[verify] ${label}`);
|
|
const result = spawnSync(process.execPath, args, { cwd: root, stdio: "inherit" });
|
|
if (result.error) {
|
|
console.error(`[verify] Unable to start ${label}: ${result.error.message}`);
|
|
process.exit(result.status || 1);
|
|
}
|
|
if (result.status !== 0) {
|
|
console.error(`[verify] ${label} failed with exit code ${result.status}.`);
|
|
process.exit(result.status || 1);
|
|
}
|
|
}
|
|
|
|
run("native dependency preflight", [path.join(root, "scripts", "verify-preflight.js")]);
|
|
const javaScriptFiles = ["src", "plugins", "scripts"]
|
|
.flatMap((directory) => listJavaScript(path.join(root, directory)));
|
|
for (const file of javaScriptFiles) {
|
|
run(`syntax: ${path.relative(root, file)}`, ["--check", file]);
|
|
}
|
|
for (const check of checks.slice(1)) run(check, [path.join(root, check)]);
|
|
console.log(`\nAll Lumi verification passed (${javaScriptFiles.length} JavaScript files, ${checks.length - 1} focused suites).`);
|