summaryrefslogtreecommitdiff
path: root/tools/copland/scripts/build-config.mjs
blob: 0a243176a5493d82d3d098f25b20771307a21be1 (plain) (blame)
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}`);