area-51/lib/font-logos/scripts/render-template.mjs

33 lines
1 KiB
JavaScript
Raw Normal View History

2025-01-30 04:21:55 +01:00
import fs from 'node:fs';
import nunjucks from 'nunjucks';
import font from './data.mjs';
import merge from 'lodash.merge';
const [templateFile, outFile] = process.argv.slice(2);
const outInfo = JSON.parse(
fs.readFileSync(`${process.env.OUTPUT_DIR}/${process.env.FONT_NAME}.out.json`));
const context = {
font: merge(font, outInfo),
classPrefix: 'fl-',
formats: [
{name: 'woff', ext: 'woff'},
{name: 'woff2', ext: 'woff2'},
{name: 'truetype', ext: 'ttf'},
],
icons: font.icons,
uniqueIcons: Object.fromEntries(Object.entries(font.icons).filter(([,icon]) => !icon.variant)),
};
const env = new nunjucks.Environment(new nunjucks.FileSystemLoader(), {
throwOnUndefined: true,
});
env.addFilter('keys', obj => Object.keys(obj));
env.addFilter('values', obj => Object.values(obj));
env.addFilter('column', (objs, col) => objs.map(o => o[col]));
env.addFilter('map', (array, fn) => array.map(fn));
env.addFilter('maxLength', array => Math.max(...array.map(x => x.length)));
fs.writeFileSync(outFile, env.render(templateFile, context));