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
|
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}`);
|