Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | import { Command } from "commander"; import { eventsRoot } from "consts"; import { readFile, writeJSON } from "fs-extra"; import { glob } from "lib/helpers/glob"; import { scriptEventDefsToSnapshot } from "lib/project/migration/snapshots/scriptEventDefs"; import { loadScriptEventHandlerFromTrustedString } from "lib/scriptEventsHandlers/trustedHandler"; import { join } from "path"; const parseFieldTypes = (value: string) => value .split(",") .map((fieldType) => fieldType.trim()) .filter(Boolean); const program = new Command() .requiredOption("--tag <tag>", "Snapshot tag used in the output filename") .option( "--fieldTypes <fieldTypes>", "Comma-separated field types to include", parseFieldTypes, ) .parse(); const options = program.opts<{ tag: string; fieldTypes?: string[]; }>(); if (!/^[a-zA-Z0-9_-]+$/.test(options.tag)) { throw new Error( "Snapshot tag may only contain letters, numbers, underscores, and hyphens", ); } const main = async () => { const eventPaths = await glob("event*.js", { cwd: eventsRoot, absolute: true, }); const handlers = await Promise.all( eventPaths.map(async (eventPath) => loadScriptEventHandlerFromTrustedString( await readFile(eventPath, "utf8"), eventPath, ), ), ); const scriptEventDefs = Object.fromEntries( handlers.map((handler) => [handler.id, handler]), ); const snapshot = scriptEventDefsToSnapshot( scriptEventDefs, options.fieldTypes, ); const outputPath = join( process.cwd(), "src", "lib", "project", "migration", "snapshots", `scriptEventDefs${options.tag}.json`, ); await writeJSON(outputPath, snapshot, { spaces: 2 }); console.log( `Wrote ${Object.keys(snapshot).length} definitions to ${outputPath}`, ); for (const handler of handlers) { handler.cleanup(); } }; main().catch((error: unknown) => { console.error(error); process.exitCode = 1; }); |