Lumi/scripts/verify-all.js
2026-07-17 22:10:00 +02:00

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).`);