From e85dffa9b4b952f431317a7cc469addcf1eaa941 Mon Sep 17 00:00:00 2001 From: Karsa Date: Thu, 2 Mar 2023 08:51:56 +0100 Subject: [PATCH] Adds `gi` = generate icons script (#975) --- package.json | 3 ++- scripts/generate/generateIcons.mjs | 35 ++++++++++++++++++++++++++++++ scripts/helpers.mjs | 13 +++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 scripts/generate/generateIcons.mjs diff --git a/package.json b/package.json index ff44baeb4..8234cd073 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "generate:changelog": "node ./scripts/generateChangelog.mjs", "postinstall": "husky install", "lint": "eslint --ext .ts,.js,.mjs ./{packages/lucide,scripts}", - "prepare": "husky install" + "prepare": "husky install", + "gi": "node ./scripts/generate/generateIcons.mjs" }, "devDependencies": { "eslint": "^8.26.0", diff --git a/scripts/generate/generateIcons.mjs b/scripts/generate/generateIcons.mjs new file mode 100644 index 000000000..30882b8d0 --- /dev/null +++ b/scripts/generate/generateIcons.mjs @@ -0,0 +1,35 @@ +import path from 'path'; +import {getCurrentDirPath, writeFileIfNotExists} from "../helpers.mjs"; + +const currentDir = getCurrentDirPath(import.meta.url); +const ICONS_DIR = path.resolve(currentDir, '../../icons'); + +const iconNames = process.argv.slice(2); + +const iconSvgTemplate = ` + +`; + +const iconJsonTemplate = `{ + "$schema": "../icon.schema.json", + "tags": [ + ], + "categories": [ + ] +} +`; + +iconNames.forEach(iconName => { + writeFileIfNotExists(iconSvgTemplate, `${iconName}.svg`, ICONS_DIR); + writeFileIfNotExists(iconJsonTemplate, `${iconName}.json`, ICONS_DIR); +}); diff --git a/scripts/helpers.mjs b/scripts/helpers.mjs index d6bd67434..e0cfc0f8f 100644 --- a/scripts/helpers.mjs +++ b/scripts/helpers.mjs @@ -70,6 +70,19 @@ export const appendFile = (content, fileName, outputDirectory) => export const writeFile = (content, fileName, outputDirectory) => fs.writeFileSync(path.join(outputDirectory, fileName), content, 'utf-8'); +/** + * writes content to a file if it does not exist + * + * @param {string} content + * @param {string} fileName + * @param {string} outputDirectory + */ +export const writeFileIfNotExists = (content, fileName, outputDirectory) => { + if (!fs.existsSync(path.join(outputDirectory, fileName))) { + writeFile(content, fileName, outputDirectory); + } +}; + /** * Reads metadata from the icons/categories directories *