import { mkdir, readFile, writeFile } from "node:fs/promises"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const skinDir = resolve(projectRoot, "../../skins/copland"); const outputPath = resolve(projectRoot, "dist/copland-skin.config"); const parts = ["css", "header", "footer", "details", "js"]; function fossilQuote(value) { return `'${value.replaceAll("'", "''")}'`; } const records = []; for (const name of parts) { const value = await readFile(resolve(skinDir, `${name}.txt`), "utf8"); const record = `1 ${fossilQuote(name)} value ${fossilQuote(value)}`; records.push(`config /config ${Buffer.byteLength(record, "utf8")}\n${record}\n`); } const header = [ "# Copland Fossil skin configuration", "# Generated deterministically by tools/copland/scripts/build-config.mjs.", "# Import with: fossil configuration import dist/copland-skin.config -R REPOSITORY", "", ].join("\n"); await mkdir(dirname(outputPath), { recursive: true }); await writeFile(outputPath, header + records.join(""), "utf8"); console.log(`Wrote ${outputPath}`);