From 8f15dbf777545d6177f61c62c553935e8a04314d Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+samtv12345@users.noreply.github.com> Date: Sat, 18 May 2024 11:54:34 +0200 Subject: [PATCH] Added listing and removing plugins via cli --- bin/installPlugins.ts | 46 ------------------ bin/listPlugins.ts | 18 ------- bin/package.json | 4 +- bin/plugins.ts | 106 ++++++++++++++++++++++++++++++++++++++++++ bin/removePlugins.ts | 21 --------- 5 files changed, 107 insertions(+), 88 deletions(-) delete mode 100644 bin/installPlugins.ts delete mode 100644 bin/listPlugins.ts create mode 100644 bin/plugins.ts delete mode 100644 bin/removePlugins.ts diff --git a/bin/installPlugins.ts b/bin/installPlugins.ts deleted file mode 100644 index feafee148..000000000 --- a/bin/installPlugins.ts +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -import {linkInstaller, installedPluginsPath} from "ep_etherpad-lite/static/js/pluginfw/installer"; -import {persistInstalledPlugins} from "./commonPlugins"; - -if (process.argv.length === 2) { - console.error('Expected at least one argument!'); - process.exit(1); -} - -let args = process.argv.slice(2) - -let registryPlugins: string[] = []; -let localPlugins: string[] = []; - -if (args.indexOf('--path') !== -1) { - const indexToSplit = args.indexOf('--path'); - registryPlugins = args.slice(0, indexToSplit); - localPlugins = args.slice(indexToSplit + 1); -} else { - registryPlugins = args; -} - - - -async function run() { - for (const plugin of registryPlugins) { - console.log(`Installing plugin from registry: ${plugin}`) - if (plugin.includes('@')) { - const [name, version] = plugin.split('@'); - await linkInstaller.installPlugin(name, version); - continue; - } - await linkInstaller.installPlugin(plugin); - } - - for (const plugin of localPlugins) { - console.log(`Installing plugin from path: ${plugin}`); - await linkInstaller.installFromPath(plugin); - } -} - -(async () => { - await run(); - await persistInstalledPlugins(); -})(); diff --git a/bin/listPlugins.ts b/bin/listPlugins.ts deleted file mode 100644 index 3a56176c8..000000000 --- a/bin/listPlugins.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {linkInstaller, pluginInstallPath} from "ep_etherpad-lite/static/js/pluginfw/installer"; -import {readdirSync} from "node:fs"; -import {availablePlugins} from 'ep_etherpad-lite/static/js/pluginfw/installer' -import {persistInstalledPlugins} from "./commonPlugins"; - - - -const walk = async () => { - const plugins = await linkInstaller.listPlugins() - - const pluginNames = plugins.join(" ") - - console.log("Installed plugins are:", pluginNames) -} - -(async () => { - await walk(); -})(); diff --git a/bin/package.json b/bin/package.json index 7cbd74847..d30664f4c 100644 --- a/bin/package.json +++ b/bin/package.json @@ -32,9 +32,7 @@ "rebuildPad": "node --import tsx rebuildPad.ts", "stalePlugins": "node --import tsx ./plugins/stalePlugins.ts", "checkPlugin": "node --import tsx ./plugins/checkPlugin.ts", - "install-plugins": "node --import tsx ./installPlugins.ts", - "remove-plugins": "node --import tsx ./removePlugins.ts", - "list-plugins": "node --import tsx ./listPlugins.ts" + "plugins": "node --import tsx ./plugins.ts" }, "author": "", "license": "ISC" diff --git a/bin/plugins.ts b/bin/plugins.ts new file mode 100644 index 000000000..1b9d2d446 --- /dev/null +++ b/bin/plugins.ts @@ -0,0 +1,106 @@ +'use strict'; + +import {linkInstaller} from "ep_etherpad-lite/static/js/pluginfw/installer"; +import {persistInstalledPlugins} from "./commonPlugins"; +import fs from "node:fs"; +const settings = require('ep_etherpad-lite/node/utils/Settings'); + +if (process.argv.length === 2) { + console.error('Expected at least one argument!'); + process.exit(1); +} + +let args = process.argv.slice(2) + +// 3d arg is ls, install or rm +let action = args[0]; + + + + +const install = ()=> { + + let registryPlugins: string[] = []; + let localPlugins: string[] = []; + + if (args.indexOf('--path') !== -1) { + const indexToSplit = args.indexOf('--path'); + registryPlugins = args.slice(1, indexToSplit); + localPlugins = args.slice(indexToSplit + 1); + } else { + registryPlugins = args; + } + + async function run() { + for (const plugin of registryPlugins) { + console.log(`Installing plugin from registry: ${plugin}`) + if (plugin.includes('@')) { + const [name, version] = plugin.split('@'); + await linkInstaller.installPlugin(name, version); + continue; + } + await linkInstaller.installPlugin(plugin); + } + + for (const plugin of localPlugins) { + console.log(`Installing plugin from path: ${plugin}`); + await linkInstaller.installFromPath(plugin); + } + } + + (async () => { + await run(); + await persistInstalledPlugins(); + })(); +} + +const list = ()=>{ + const walk = async () => { + const plugins = fs.readFileSync(settings.root+"/var/installed_plugins.json", "utf-8") + const pluginNames = JSON.parse(plugins).plugins.map((plugin: any) => plugin.name).join(", ") + + console.log("Installed plugins are:", pluginNames) + } + + (async () => { + await walk(); + })(); +} + +const remove = (plugins: string[])=>{ + const walk = async () => { + for (const plugin of plugins) { + console.log(`Uninstalling plugin: ${plugin}`) + await linkInstaller.uninstallPlugin(plugin); + } + await persistInstalledPlugins(); + } + + (async () => { + await walk(); + })(); +} + + +switch (action) { + case "install": + install(); + break; + case "i": + install(); + break; + case "ls": + list(); + break; + case "list": + list(); + break; + case "rm": + remove(args.slice(1)); + break; + default: + console.error('Expected at least one argument!'); + process.exit(1); +} + + diff --git a/bin/removePlugins.ts b/bin/removePlugins.ts deleted file mode 100644 index b031ced7a..000000000 --- a/bin/removePlugins.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {linkInstaller} from "ep_etherpad-lite/static/js/pluginfw/installer"; -import {persistInstalledPlugins} from "./commonPlugins"; -if (process.argv.length === 2) { - console.error('Expected at least one argument!'); - process.exit(1); -} - -let pluginsToRemove = process.argv.slice(2); - -async function run() { - for (const plugin of pluginsToRemove) { - console.log(`Removing plugin from etherpad: ${plugin}`) - await linkInstaller.uninstallPlugin(plugin); - - } -} - -(async () => { - await run(); - await persistInstalledPlugins(); -})();