]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/plugins/plugin-manager.ts
Ensure to install supported plugins
[github/Chocobozzz/PeerTube.git] / server / lib / plugins / plugin-manager.ts
index 0086a0e2e42af9c78afaf86ee44430bca66c2998..03ea48416b7ab65f8e9d0d60d63f31d59c09eb69 100644 (file)
@@ -1,3 +1,4 @@
+import decache from 'decache'
 import * as express from 'express'
 import { createReadStream, createWriteStream } from 'fs'
 import { outputFile, readJSON } from 'fs-extra'
@@ -23,8 +24,6 @@ import { ClientHtml } from '../client-html'
 import { RegisterHelpers } from './register-helpers'
 import { installNpmPlugin, installNpmPluginFromDisk, removeNpmPlugin } from './yarn'
 
-const decache = require('decache')
-
 export interface RegisteredPlugin {
   npmName: string
   name: string
@@ -329,11 +328,18 @@ export class PluginManager implements ServerHook {
     return plugin
   }
 
-  async update (toUpdate: string, version?: string, fromDisk = false) {
+  async update (toUpdate: string, fromDisk = false) {
     const npmName = fromDisk ? basename(toUpdate) : toUpdate
 
     logger.info('Updating plugin %s.', npmName)
 
+    // Use the latest version from DB, to not upgrade to a version that does not support our PeerTube version
+    let version: string
+    if (!fromDisk) {
+      const plugin = await PluginModel.loadByNpmName(toUpdate)
+      version = plugin.latestVersion
+    }
+
     // Unregister old hooks
     await this.unregister(npmName)