50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const referencePath = path.join(__dirname, "reference-source.json");
|
|
|
|
function fail(message, details) {
|
|
const payload = { error: message };
|
|
if (details) payload.details = details;
|
|
process.stderr.write(`${JSON.stringify(payload)}\n`);
|
|
process.exit(1);
|
|
}
|
|
|
|
async function main() {
|
|
try {
|
|
await import("cloakbrowser");
|
|
await import("playwright-core");
|
|
} catch (error) {
|
|
fail(
|
|
"Missing dependency/config: web-automation requires cloakbrowser and playwright-core.",
|
|
error instanceof Error ? error.message : String(error)
|
|
);
|
|
}
|
|
|
|
const browsePath = path.join(__dirname, "browse.ts");
|
|
const browseSource = fs.readFileSync(browsePath, "utf8");
|
|
if (!/launchPersistentContext/.test(browseSource) || !/from ['"]cloakbrowser['"]/.test(browseSource)) {
|
|
fail("browse.ts is not configured for CloakBrowser.");
|
|
}
|
|
|
|
const referenceSource = JSON.parse(fs.readFileSync(referencePath, "utf8"));
|
|
if (!referenceSource.referenceRepo || !referenceSource.referenceCommit) {
|
|
fail("Frozen reference metadata is missing from reference-source.json.");
|
|
}
|
|
|
|
process.stdout.write("OK: cloakbrowser + playwright-core installed\n");
|
|
process.stdout.write("OK: CloakBrowser integration detected in browse.ts\n");
|
|
process.stdout.write(
|
|
`OK: frozen reference ${referenceSource.referenceRepo}@${referenceSource.referenceCommit}\n`
|
|
);
|
|
}
|
|
|
|
main().catch((error) => {
|
|
fail("Install check failed.", error instanceof Error ? error.message : String(error));
|
|
});
|