about summary refs log tree commit diff stats
path: root/bin/build.ts
diff options
context:
space:
mode:
authorAlan Pearce2023-09-22 08:40:59 +0200
committerAlan Pearce2023-09-22 12:03:47 +0200
commit3a2d198d153efc8a69e7640f7dcde88207268ff3 (patch)
tree7cec49484a6fbbf96121ff396afe1fd0425c4654 /bin/build.ts
parent9c4fd37c97a87b9d1ab9e65b77e4578936b66323 (diff)
downloadwebsite-3a2d198d153efc8a69e7640f7dcde88207268ff3.tar.lz
website-3a2d198d153efc8a69e7640f7dcde88207268ff3.tar.zst
website-3a2d198d153efc8a69e7640f7dcde88207268ff3.zip
Replace zola with DOM-based static site generation code
Diffstat (limited to 'bin/build.ts')
-rwxr-xr-xbin/build.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/bin/build.ts b/bin/build.ts
new file mode 100755
index 0000000..d6b6df9
--- /dev/null
+++ b/bin/build.ts
@@ -0,0 +1,30 @@
+#!/usr/bin/env bun
+import fs from "node:fs";
+import log from "loglevel";
+
+import generateSite from "../src/templates";
+
+log.setLevel((Bun.env.LOG_LEVEL || "info") as log.LogLevelDesc);
+
+fs.mkdirSync("public", { recursive: true });
+log.info("Generating site...");
+try {
+  await generateSite();
+} catch (error) {
+  log.error("Error generating site", error);
+  process.exit(1);
+}
+
+log.info("Copying static files...");
+if (!fs.existsSync("static")) {
+  log.error("static directory not found");
+  process.exit(1);
+}
+fs.readdirSync("static").map((file) => {
+  log.info(`Copying static/${file}`);
+  fs.cpSync(`static/${file}`, `public/${file}`, {
+    dereference: true,
+    recursive: true,
+    preserveTimestamps: true,
+  });
+});