]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/schedulers/plugins-check-scheduler.ts
Improve target bitrate calculation
[github/Chocobozzz/PeerTube.git] / server / lib / schedulers / plugins-check-scheduler.ts
index 9c60dbcd41c409c7e1e366f4f119ff924758dfdd..c95e109b03cf8460b259236ac19986535c46d0ff 100644 (file)
@@ -1,12 +1,12 @@
+import { chunk } from 'lodash'
+import { compareSemVer } from '@shared/core-utils'
 import { logger } from '../../helpers/logger'
-import { AbstractScheduler } from './abstract-scheduler'
-import { retryTransactionWrapper } from '../../helpers/database-utils'
-import { SCHEDULER_INTERVALS_MS } from '../../initializers/constants'
 import { CONFIG } from '../../initializers/config'
+import { SCHEDULER_INTERVALS_MS } from '../../initializers/constants'
 import { PluginModel } from '../../models/server/plugin'
-import { chunk } from 'lodash'
+import { Notifier } from '../notifier'
 import { getLatestPluginsVersion } from '../plugins/plugin-index'
-import { compareSemVer } from '../../../shared/core-utils/miscs/miscs'
+import { AbstractScheduler } from './abstract-scheduler'
 
 export class PluginsCheckScheduler extends AbstractScheduler {
 
@@ -19,13 +19,13 @@ export class PluginsCheckScheduler extends AbstractScheduler {
   }
 
   protected async internalExecute () {
-    return retryTransactionWrapper(this.checkLatestPluginsVersion.bind(this))
+    return this.checkLatestPluginsVersion()
   }
 
   private async checkLatestPluginsVersion () {
     if (CONFIG.PLUGINS.INDEX.ENABLED === false) return
 
-    logger.info('Checkin latest plugins version.')
+    logger.info('Checking latest plugins version.')
 
     const plugins = await PluginModel.listInstalled()
 
@@ -39,19 +39,33 @@ export class PluginsCheckScheduler extends AbstractScheduler {
       }
 
       const npmNames = Object.keys(pluginIndex)
-      const results = await getLatestPluginsVersion(npmNames)
 
-      for (const result of results) {
-        const plugin = pluginIndex[result.npmName]
-        if (!result.latestVersion) continue
+      try {
+        const results = await getLatestPluginsVersion(npmNames)
+
+        for (const result of results) {
+          const plugin = pluginIndex[result.npmName]
+          if (!result.latestVersion) continue
+
+          if (
+            !plugin.latestVersion ||
+            (plugin.latestVersion !== result.latestVersion && compareSemVer(plugin.latestVersion, result.latestVersion) < 0)
+          ) {
+            plugin.latestVersion = result.latestVersion
+            await plugin.save()
 
-        if (plugin.latestVersion !== result.latestVersion && compareSemVer(plugin.latestVersion, result.latestVersion) < 0) {
-          plugin.latestVersion = result.latestVersion
-          await plugin.save()
+            // Notify if there is an higher plugin version available
+            if (compareSemVer(plugin.version, result.latestVersion) < 0) {
+              Notifier.Instance.notifyOfNewPluginVersion(plugin)
+            }
+
+            logger.info('Plugin %s has a new latest version %s.', result.npmName, plugin.latestVersion)
+          }
         }
+      } catch (err) {
+        logger.error('Cannot get latest plugins version.', { npmNames, err })
       }
     }
-
   }
 
   static get Instance () {