diff --git a/turbo/generators/lib/anchor-validate.ts b/turbo/generators/lib/anchor-validate.ts new file mode 100644 index 0000000..38ad4e2 --- /dev/null +++ b/turbo/generators/lib/anchor-validate.ts @@ -0,0 +1,26 @@ +import { existsSync, readFileSync } from "node:fs"; +import { join } from "node:path"; + +/** + * Throws with a clear message if any required anchor is missing from the target + * file. Generator actions call this in their prompt validator so the run aborts + * cleanly before any partial output lands on disk. + */ +export function assertAnchors( + repoRoot: string, + relativePath: string, + anchors: string[], +): void { + const path = join(repoRoot, relativePath); + if (!existsSync(path)) { + throw new Error(`Required file does not exist: ${relativePath}`); + } + const content = readFileSync(path, "utf8"); + for (const anchor of anchors) { + if (!content.includes(anchor)) { + throw new Error( + `Missing anchor "${anchor}" in ${relativePath}. Add it before running this generator.`, + ); + } + } +}