import { mkdirSync, writeFileSync, readFileSync } from "node:fs"; import { primitives } from "@botanica/renderer"; const directory = "assets/species/velvetleaf"; mkdirSync(directory, { recursive: true }); const files = {}; const manifest = []; for (const [id, p] of Object.entries(primitives)) { const [x, y, w, h] = p.bounds; manifest.push({ assetId: p.assetId, category: p.category, anchor: [(p.anchor[0] - x) / w, (p.anchor[1] - y) / h], bounds: p.bounds, paletteSlots: p.paletteSlots, rendererVersion: p.rendererVersion, }); const leaf = p.category === "leaf", line = ["branch", "stem"].includes(p.category); const paths = '' + (p.shade ? '' : "") + (p.highlight ? '' : "") + (p.veins ? '' : ""); files[directory + "/" + id + "_v1.svg"] = '' + p.assetId + "" + paths + "\n"; } files[directory + "/manifest.json"] = JSON.stringify(manifest, null, 2) + "\n"; for (const [file, value] of Object.entries(files)) { if (process.argv.includes("--check")) { if (readFileSync(file, "utf8").replaceAll("\r\n", "\n") !== value) throw new Error("Asset source drift: " + file); } else writeFileSync(file, value); } console.log( Object.keys(files).length + " asset files " + (process.argv.includes("--check") ? "verified" : "written"), );