From dba85a1e9e9f603ba52e1ea42deaf3fdd799b1d8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 11 Jul 2019 14:40:19 +0200 Subject: WIP plugins: add plugin settings/uninstall in client --- server/lib/plugins/plugin-manager.ts | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'server/lib/plugins/plugin-manager.ts') diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index 3d8375acd..8cdeff446 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -89,6 +89,8 @@ export class PluginManager { async runHook (hookName: string, param?: any) { let result = param + if (!this.hooks[hookName]) return result + const wait = hookName.startsWith('static:') for (const hook of this.hooks[hookName]) { @@ -162,8 +164,8 @@ export class PluginManager { : await installNpmPlugin(toInstall, version) name = fromDisk ? basename(toInstall) : toInstall - const pluginType = name.startsWith('peertube-theme-') ? PluginType.THEME : PluginType.PLUGIN - const pluginName = this.normalizePluginName(name) + const pluginType = PluginModel.getTypeFromNpmName(name) + const pluginName = PluginModel.normalizePluginName(name) const packageJSON = this.getPackageJSON(pluginName, pluginType) if (!isPackageJSONValid(packageJSON, pluginType)) { @@ -173,6 +175,7 @@ export class PluginManager { [ plugin ] = await PluginModel.upsert({ name: pluginName, description: packageJSON.description, + homepage: packageJSON.homepage, type: pluginType, version: packageJSON.version, enabled: true, @@ -196,10 +199,10 @@ export class PluginManager { await this.registerPluginOrTheme(plugin) } - async uninstall (packageName: string) { - logger.info('Uninstalling plugin %s.', packageName) + async uninstall (npmName: string) { + logger.info('Uninstalling plugin %s.', npmName) - const pluginName = this.normalizePluginName(packageName) + const pluginName = PluginModel.normalizePluginName(npmName) try { await this.unregister(pluginName) @@ -207,9 +210,9 @@ export class PluginManager { logger.warn('Cannot unregister plugin %s.', pluginName, { err }) } - const plugin = await PluginModel.load(pluginName) + const plugin = await PluginModel.loadByNpmName(npmName) if (!plugin || plugin.uninstalled === true) { - logger.error('Cannot uninstall plugin %s: it does not exist or is already uninstalled.', packageName) + logger.error('Cannot uninstall plugin %s: it does not exist or is already uninstalled.', npmName) return } @@ -218,9 +221,9 @@ export class PluginManager { await plugin.save() - await removeNpmPlugin(packageName) + await removeNpmPlugin(npmName) - logger.info('Plugin %s uninstalled.', packageName) + logger.info('Plugin %s uninstalled.', npmName) } // ###################### Private register ###################### @@ -353,10 +356,6 @@ export class PluginManager { return join(CONFIG.STORAGE.PLUGINS_DIR, 'node_modules', prefix + pluginName) } - private normalizePluginName (name: string) { - return name.replace(/^peertube-((theme)|(plugin))-/, '') - } - // ###################### Private getters ###################### private getRegisteredPluginsOrThemes (type: PluginType) { -- cgit v1.2.3