@kde/react-icons-kit
Version:
React Icons Kit using various Svg Icon set, forked from react-icons-kit
49 lines (38 loc) • 1.5 kB
JavaScript
const fs = require('fs');
const path = require('path');
const { writeIconModule, createExportLine,
readFromSvgContent, findAllSvgFiles : baseFindAllSvgFiles } = require('./utils');
const baseFolder = 'material-design-icons-3.0.1';
const outFolder = path.join('..', 'src', 'md');
/**
* Download latest from:
* https://github.com/google/material-design-icons/releases
*
*
*
*/
const filterName = f => f.indexOf('svg/production') >= 0;
const filterSize = f => f.indexOf('_24px') >= 0;
const findAllSvgFiles = baseFindAllSvgFiles(filterName);
const extractName = fname => {
const index = fname.indexOf('_24px.svg');
return fname.substring(0, index);
};
const generateFiles = () => {
const svgs = findAllSvgFiles(baseFolder).filter(filterSize);
const processed = {};
const exportLines = svgs.map( svgFile => {
const filename = path.basename(svgFile);
const name = extractName(filename);
if ( !processed[name] ) { //there seems to be some duplicate names
const content = fs.readFileSync(svgFile, { encoding: 'UTF-8' });
const { viewBox, children } = readFromSvgContent(content);
const exportLine = createExportLine(name, viewBox, children);
fs.writeFileSync(path.join(outFolder, `${name}.js`), exportLine);
processed[name] = name;
return exportLine;
}
}).filter( f => f );
writeIconModule(exportLines, path.join(outFolder, 'index.js'));
};
generateFiles();