2024-03-14 16:06:32 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
import {writeFileSync} from 'fs'
|
2024-03-14 18:53:05 +01:00
|
|
|
import {linkInstaller, installedPluginsPath} from "ep_etherpad-lite/static/js/pluginfw/installer";
|
2024-03-14 16:06:32 +01:00
|
|
|
import {PackageData} from "ep_etherpad-lite/node/types/PackageInfo";
|
|
|
|
|
|
|
|
const pluginsModule = require('ep_etherpad-lite/static/js/pluginfw/plugins');
|
|
|
|
if (process.argv.length === 2) {
|
|
|
|
console.error('Expected at least one argument!');
|
|
|
|
process.exit(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
const plugins = process.argv.slice(2);
|
|
|
|
|
|
|
|
const persistInstalledPlugins = async () => {
|
|
|
|
const plugins:PackageData[] = []
|
|
|
|
const installedPlugins = {plugins: plugins};
|
|
|
|
for (const pkg of Object.values(await pluginsModule.getPackages()) as PackageData[]) {
|
|
|
|
installedPlugins.plugins.push({
|
|
|
|
name: pkg.name,
|
|
|
|
version: pkg.version,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
installedPlugins.plugins = [...new Set(installedPlugins.plugins)];
|
|
|
|
writeFileSync(installedPluginsPath, JSON.stringify(installedPlugins));
|
|
|
|
};
|
|
|
|
|
|
|
|
async function run() {
|
|
|
|
for (const plugin of plugins) {
|
2024-03-14 18:53:05 +01:00
|
|
|
await linkInstaller.installPlugin(plugin);
|
2024-03-14 16:06:32 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
(async () => {
|
|
|
|
await run();
|
|
|
|
await persistInstalledPlugins();
|
|
|
|
})();
|