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));