#!/usr/bin/env node const fs = require('fs') function rmInDir(dirPath) { try { var files = fs.readdirSync(dirPath) } catch(e) { return } if (files.length > 0) { for (var i = 0; i < files.length; i++) { var filePath = dirPath + '/' + files[i] if (fs.statSync(filePath).isFile()) fs.unlinkSync(filePath) else rmDir(filePath) } } } function cp(src, dest) { if (!fs.existsSync(src)) { return false; } var data = fs.readFileSync(src, 'utf-8'); fs.writeFileSync(dest, data); } // let manifest = JSON.parse(fs.readFileSync('templates/.fontcustom-manifest.json', 'utf-8')) let fcyml = fs.readFileSync('../fontcustom.yml', 'utf-8') let desired = fs.readFileSync('../wanted.ini', 'utf-8').split('\n').filter((x) => x.length && x[0] !== '#') console.log(`Including ${desired.length} icons`) console.log('Preparing icons.yml...') // this would be prettier with some yaml module, but to avoid installing anything... let iconsy = fs.readFileSync('templates/icons.yml', 'utf-8') let pieces = iconsy.substring(iconsy.indexOf('\n')+1).split(' - name:') pieces.shift() // remove first // now we have the entries, without leading ' - name' let pattern = /id:\s+([a-z_0-9-]+)\n/ pieces = pieces.filter((x) => { let ar = pattern.exec(x) return ar !== null && desired.indexOf(ar[1]) !== -1 }) let combined = 'icons:\n - name:' + pieces.join(' - name:') console.log('\x1b[32m[Writing]\x1b[m FA~icons.yml') fs.writeFileSync('../Fork-Awesome/src/icons/icons.yml', combined) console.log('\x1b[32m[Writing]\x1b[m FA~fontcustom.yml') fs.writeFileSync('../Fork-Awesome/src/icons/fontcustom.yml', fcyml) console.log('Deleting FA~.fontcustom-manifest.json, to force a rebuilt ...') if (fs.existsSync('../Fork-Awesome/src/icons/.fontcustom-manifest.json')) { fs.unlinkSync('../Fork-Awesome/src/icons/.fontcustom-manifest.json') } console.log('Deleting files in FA~svg/ ...') rmInDir('../Fork-Awesome/src/icons/svg') console.log('Copying desired files to FA~svg/ ...') for (let a of desired) { cp(`./templates/svg/${a}.svg`, `../Fork-Awesome/src/icons/svg/${a}.svg`) }