From d1bbf14fedbbed06896093899e3bd538d8684cc8 Mon Sep 17 00:00:00 2001 From: codecalm Date: Sat, 1 Apr 2023 13:51:09 +0200 Subject: [PATCH] add script to create icons directories --- packages/icons/build.mjs | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/packages/icons/build.mjs b/packages/icons/build.mjs index e6e7c143d..b1098022c 100644 --- a/packages/icons/build.mjs +++ b/packages/icons/build.mjs @@ -1,13 +1,12 @@ import fs from 'fs' -import { createDirectory, readSvgs } from '../../.build/helpers.mjs' +import { readSvgs, HOME_DIR } from '../../.build/helpers.mjs' import { buildIcons } from '../../.build/build-icons.mjs' -import { stringify } from 'svgson' const svgFiles = readSvgs() const buildSprite = () => { let svgContent = '' - svgFiles.forEach(function(file, i) { + svgFiles.forEach(function (file, i) { const svgFileContent = file.contents.replace(/]+>/g, '').replace(/<\/svg>/g, '').replace(/\n+/g, '').replace(/>\s+<').trim() svgContent += `${svgFileContent}` }) @@ -30,6 +29,38 @@ const buildNodes = () => { fs.writeFileSync(`./tabler-nodes.json`, iconNodesStringified); } +const buildCategories = () => { + const icons = JSON.parse(fs.readFileSync(`${HOME_DIR}/tags.json`)) + + if(fs.existsSync(`./categories`)) { + fs.rmSync(`./categories`, { recursive: true }) + } + + fs.mkdirSync(`./categories`) + + + Object + .entries(icons) + .forEach(([name, content]) => { + const categories = [(content.category || 'other') + .toLowerCase() + .replace(/ /g, '-')] + .flat() + + categories.forEach(category => { + if (!fs.existsSync(`./categories/${category}`)) { + fs.mkdirSync(`./categories/${category}`) + } + + if (fs.existsSync(`./icons/${name}.svg`)) { + fs.copyFileSync(`./icons/${name}.svg`, `./categories/${category}/${name}.svg`) + } + }) + + console.log(`Move ${name} icon to ${categories.join(', ')} category`) + }) +} + const componentTemplate = ({ namePascal, svg @@ -51,6 +82,7 @@ const indexTypeTemplate = ({ buildSprite() buildNodes() +buildCategories() buildIcons({ name: 'icons', componentTemplate,