import { mkdir } from 'node:fs/promises'; import { join } from 'node:path'; import { writeTextFileAtomic } from './atomic-write.js'; import type { CinemaConsoleModel } from './cinema-console-types.js'; import { renderCinemaConsoleHtml } from './cinema-console-render.js'; import { resolveProjectWorkspace } from './workspace.js'; export interface CinemaConsoleExportResult { htmlPath: string; dataPath: string; mode: 'static-read-only'; } export async function writeCinemaConsoleExport( root: string, model: CinemaConsoleModel, ): Promise { if (model.mode !== 'static-read-only') throw new Error('Cinema static console export requires a static-read-only projection'); const workspace = resolveProjectWorkspace(model.projectSlug, root); await mkdir(workspace.projectDir, { recursive: true }); const htmlPath = join(workspace.projectDir, 'cinema-review.html'); const dataPath = join(workspace.projectDir, 'cinema-console-data.json'); await writeTextFileAtomic(dataPath, `${JSON.stringify(model, null, 2)}\n`); await writeTextFileAtomic(htmlPath, renderCinemaConsoleHtml(model)); return { htmlPath, dataPath, mode: 'static-read-only' }; }