From 1b66e1c39805ba94e0563c2e0b585984c71d6f5e Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee <97532027+rajarshee-harness@users.noreply.github.com> Date: Sat, 3 Feb 2024 10:43:08 +0530 Subject: [PATCH] Normalise multiSrc Source Names --- scripts/json_plugins.ts | 136 +++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 65 deletions(-) diff --git a/scripts/json_plugins.ts b/scripts/json_plugins.ts index 39afe0f..4e6ea30 100644 --- a/scripts/json_plugins.ts +++ b/scripts/json_plugins.ts @@ -7,75 +7,81 @@ import { Plugin, isPlugin } from "@typings/plugin"; const root = path.dirname(__dirname); const outRoot = path.join(root, ".."); -const { execSync } = require('child_process'); -const REMOTE = execSync('git remote get-url origin').toString().replace(/[\s\n]/g, ''); -const CURRENT_BRANCH = execSync('git rev-parse --abbrev-ref HEAD').toString().replace(/[\s\n]/g, ''); -const USERNAME = REMOTE.split('/')[3].trim(); -const REPO = REMOTE.split('/')[4].trim().replace(/\.git$/, ''); +const { execSync } = require("child_process"); +const REMOTE = execSync("git remote get-url origin") + .toString() + .replace(/[\s\n]/g, ""); +const CURRENT_BRANCH = execSync("git rev-parse --abbrev-ref HEAD") + .toString() + .replace(/[\s\n]/g, ""); +const USERNAME = REMOTE.split("/")[3].trim(); +const REPO = REMOTE.split("/")[4] + .trim() + .replace(/\.git$/, ""); const USER_CONTENT_LINK = `https://raw.githubusercontent.com/${USERNAME}/${REPO}/${CURRENT_BRANCH}`; - const ICON_LINK = `${USER_CONTENT_LINK}/icons`; const PLUGIN_LINK = `${USER_CONTENT_LINK}/.js/plugins`; const json: { - [key: string]: { - id: string; - name: string; - site: string; - lang: string; - version: string; - url: string; - iconUrl: string; - }[]; + [key: string]: { + id: string; + name: string; + site: string; + lang: string; + version: string; + url: string; + iconUrl: string; + }[]; } = {}; -if(!fs.existsSync(path.join(outRoot, '.dist'))){ - fs.mkdirSync(path.join(outRoot, '.dist')); +if (!fs.existsSync(path.join(outRoot, ".dist"))) { + fs.mkdirSync(path.join(outRoot, ".dist")); } const jsonPath = path.join(outRoot, ".dist", "plugins.json"); const jsonMinPath = path.join(outRoot, ".dist", "plugins.min.json"); const pluginSet = new Set(); for (let language in languages) { - // language with English name - const langPath = path.join(root, "plugins", language.toLowerCase()); - if (!fs.existsSync(langPath)) continue; - const plugins = fs.readdirSync(langPath); - json[language] = []; - plugins.forEach((plugin) => { - if (plugin.startsWith(".")) return; - const instance: - | Plugin.PluginBase - | unknown = require(`../plugins/${language.toLowerCase()}/${ - plugin.split(".")[0] - }`).default; + // language with English name + const langPath = path.join(root, "plugins", language.toLowerCase()); + if (!fs.existsSync(langPath)) continue; + const plugins = fs.readdirSync(langPath); + json[language] = []; + plugins.forEach((plugin) => { + if (plugin.startsWith(".")) return; + const instance: Plugin.PluginBase | unknown = + require(`../plugins/${language.toLowerCase()}/${ + plugin.split(".")[0] + }`).default; - if (!isPlugin(instance)) { - console.log(plugin); - return; - } + if (!isPlugin(instance)) { + console.log(plugin); + return; + } - const { id, name, site, version, icon } = instance; - const info = { - id, - name, - site, - lang: language, - version, - url: `${PLUGIN_LINK}/${language.toLowerCase()}/${plugin}`, - iconUrl: `${ICON_LINK}/${icon}`, - } as const; + const { id, name, site, version, icon } = instance; + const normalisedName = name.replace(/\[.*\]/, ""); - if (pluginSet.has(id)) { - console.log("There's already a plugin with id:", id); - throw new Error("2 or more plugins have the same id"); - } else { - pluginSet.add(id); - } + const info = { + id, + name: normalisedName, + site, + lang: language, + version, + url: `${PLUGIN_LINK}/${language.toLowerCase()}/${plugin}`, + iconUrl: `${ICON_LINK}/${icon}`, + } as const; - json[language].push(info); - console.log(name, "✅"); - }); + if (pluginSet.has(id)) { + console.log("There's already a plugin with id:", id); + throw new Error("2 or more plugins have the same id"); + } else { + pluginSet.add(id); + } + + json[language].push(info); + console.log(name, "✅"); + }); } for (let lang in json) json[lang].sort((a, b) => a.id.localeCompare(b.id)); @@ -85,19 +91,19 @@ fs.writeFileSync(jsonPath, JSON.stringify(json, null, "\t")); // check for broken plugins for (let language in languages) { - const tsFiles = fs.readdirSync( - path.join(root, "..", "plugins", language.toLocaleLowerCase()) - ); - tsFiles - .filter((f) => f.endsWith(".broken.ts")) - .forEach((fn) => { - console.error( - language.toLocaleLowerCase() + - "/" + - fn.replace(".broken.ts", "") + - " ❌" - ); - }); + const tsFiles = fs.readdirSync( + path.join(root, "..", "plugins", language.toLocaleLowerCase()) + ); + tsFiles + .filter((f) => f.endsWith(".broken.ts")) + .forEach((fn) => { + console.error( + language.toLocaleLowerCase() + + "/" + + fn.replace(".broken.ts", "") + + " ❌" + ); + }); } console.log(jsonPath);