rushabhcodes/ESP32-E-Reader
A compact ESP32-C3 e-reader PCB integrating LiPo charging/protection, USB-C, 3.3 V regulation, e-paper display bias generation, microSD storage, and tactile controls.
- Version
- 1.0.85
- License
- unset
- Stars
- 3
scripts/copy-preview-assets.mjs
import { preparePreviewArchives, previewImages } from "./prepare-preview-archives.mjs";
import { copyFile, mkdir, readdir, readFile } from "node:fs/promises";
import path from "node:path";
import { fileURLToPath } from "node:url";
const root = fileURLToPath(new URL("../", import.meta.url));
await preparePreviewArchives();
const files = [
"assets/components/sources.json", "assets/components/supplier-step-archives.json",
];
for (const name of await readdir(path.join(root, "assets/components")))
if (name.endsWith(".obj")) files.push("assets/components/" + name);
const archives = JSON.parse(await readFile(path.join(root, "assets/components/supplier-step-archives.json"), "utf8"));
files.push(...archives.map((archive) => archive.path));
const enclosure = [
"front-chassis.glb", "rear-cover.glb", "display-panel.glb", "display-cushioning.glb",
"pcb-cover-fasteners.glb", "battery-envelope-DO-NOT-PRINT.glb",
"battery-pack.glb", "battery-leads.glb", "battery-plug.glb", "battery-connection.json", "battery-model.json",
"antenna-envelope-DO-NOT-PRINT.glb", "battery-liner-DO-NOT-PRINT.glb", "battery-adhesive-DO-NOT-PRINT.glb",
"print/front-chassis.stl", "print/rear-cover.stl", "reader-print-plate.3mf",
"esp32-reader-printable-stls.zip", "PRINTING.md", "fdm-reference.ini", "enclosure-design.json",
"pcb-mounts.json", "display-connection.json", "component-inventory.csv", "component-envelopes.csv",
...previewImages,
"stl/mesh-check.json", "stl/clearance-check.json", "stl/assembly-check.json",
"stl/battery-connection-check.json", "stl/display-interface-check.json", "stl/toolpath-check.json", "stl/display-retainer-check.json", "stl/display-connection-check.json", "stl/printability-check.json",
];
files.push(...enclosure.map((name) => "assets/enclosure/" + name));
// The browser loads OBJ/GLB. Keep supplier STEP originals together in a ZIP;
// copying every STEP twice made registry finalization exceed its time limit.
for (const file of files) {
const destination = path.join(root, "dist", file);
await mkdir(path.dirname(destination), { recursive: true });
await copyFile(path.join(root, file), destination);
}
console.log(`Copied ${files.length} browser models, print files and previews to dist.`);