Files
bubblechambersimart/tools/render-composition.mjs

21 lines
1009 B
JavaScript
Raw Permalink Normal View History

2026-06-02 19:17:19 -04:00
/* render-composition.mjs render a grouped composition file to SVG.
Usage: node tools/render-composition.mjs <composition.mjs> [out.svg] [size]
*/
import { writeFileSync } from 'node:fs';
import { resolve } from 'node:path';
import { pathToFileURL } from 'node:url';
import { renderComposition } from '../src/compose/composition.js';
const file = process.argv[2];
if (!file) { console.error('usage: node tools/render-composition.mjs <composition.mjs> [out.svg] [size]'); process.exit(1); }
const out = process.argv[3] || '/tmp/composition.svg';
const size = process.argv[4] ? +process.argv[4] : undefined;
const mod = await import(pathToFileURL(resolve(file)).href);
const comp = mod.composition || mod.default;
if (!comp) { console.error('composition file must `export const composition = {...}`'); process.exit(1); }
const svg = renderComposition(comp, size);
writeFileSync(out, svg);
console.log(`composition -> ${out} (${(svg.length / 1024).toFixed(0)} KB, size=${size || comp.size || 1500})`);