Files
kandev/apps/web/scripts/write-e2e-plugin-identity.mjs
2026-09-15 19:05:40 +01:00

47 lines
1.5 KiB
JavaScript

import { createHash } from "node:crypto";
import { readFile, writeFile } from "node:fs/promises";
import path from "node:path";
import process from "node:process";
const [sourcePath, generatedPath, manifestPath, archivePath, identityPath] = process.argv.slice(2);
if (!identityPath)
throw new Error(
"write-e2e-plugin-identity requires source, output, manifest, archive, and identity paths",
);
async function sha256(file) {
return createHash("sha256")
.update(await readFile(file))
.digest("hex");
}
const manifest = await readFile(manifestPath, "utf8");
for (const required of [
'id: "kandev-plugin-e2e"',
'version: "1.0.0"',
'min_kandev_version: "0.91.1"',
'api_read: ["messages"]',
]) {
if (!manifest.includes(required)) throw new Error(`fixture manifest missing ${required}`);
}
const output = await readFile(generatedPath, "utf8");
if (!output.includes('id: "prompt-history-plugin"')) {
throw new Error("fixture output missing prompt-history-plugin panel");
}
const identity = {
schemaVersion: 2,
pluginId: "kandev-plugin-e2e",
pluginVersion: "1.0.0",
bundlePath: "ui/bundle.js",
sourceHash: await sha256(sourcePath),
generatedOutputHash: await sha256(generatedPath),
manifestHash: await sha256(manifestPath),
archiveSha256: await sha256(archivePath),
manifestCapability: "messages",
minKandevVersion: "0.91.1",
panelKey: "prompt-history-plugin",
};
await writeFile(identityPath, `${JSON.stringify(identity, null, 2)}\n`);
console.log(`[e2e-plugin-identity] ${path.resolve(identityPath)}`);