evcc-io/scripts/state-schema/index.ts
andig c3f3384bfc
API: generate /api/state documentation from UI types (#32431)
Co-authored-by: Michael Geers <michael@geers.tv>
2026-08-03 11:06:37 +00:00

33 lines
910 B
TypeScript

import { buildSchemas } from "./schemas";
import { writeStateSchemas, bundleMcpJson } from "./openapi";
const command = process.argv[2] ?? "generate";
switch (command) {
case "generate": {
const schemas = buildSchemas();
writeStateSchemas(schemas);
await bundleMcpJson();
console.log(
`${Object.keys(schemas.defs).length} state schemas → openapi.state.yaml + mcp/openapi.json`
);
break;
}
case "dump": {
console.log(JSON.stringify(buildSchemas().defs, null, 2));
break;
}
case "validate": {
const source = process.argv[3];
if (!source) {
console.error("usage: vp run openapi -- validate <payload.json | url>");
process.exit(1);
}
const { validate } = await import("./validate");
if (!(await validate(source))) process.exit(1);
break;
}
default:
console.error(`unknown command: ${command}`);
process.exit(1);
}