ldc-showroom/scripts/prepare-data.mjs

25 lines
867 B
JavaScript

import fs from "node:fs";
import path from "node:path";
import AdmZip from "adm-zip";
const root = process.cwd();
const dataDir = path.join(root, "static", "data");
const publicDataDir = path.join(root, "public", "data");
const zipFiles = fs.readdirSync(dataDir, { withFileTypes: true })
.filter((entry) => entry.isFile() && entry.name.endsWith(".zip"))
.map((entry) => path.join(dataDir, entry.name))
.sort((a, b) => fs.statSync(b).mtimeMs - fs.statSync(a).mtimeMs);
const latestZip = zipFiles.at(0);
if (!latestZip) {
throw new Error("No zip data to load in static/data");
}
fs.rmSync(path.join(publicDataDir, "pictures"), { recursive: true, force: true });
fs.rmSync(path.join(publicDataDir, "data.json"), { force: true });
const zip = new AdmZip(latestZip);
zip.extractAllTo(publicDataDir);
console.info(`Prepared data from: ${latestZip}`);