]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/schedulers/plugins-check-scheduler.ts
Implement remote runner jobs in server
[github/Chocobozzz/PeerTube.git] / server / lib / schedulers / plugins-check-scheduler.ts
index 8dfdd5177843efbd953d070c318c2af05be617c3..820c01693d96cc5e06a8df9f8f94f4e88a9e1aab 100644 (file)
@@ -1,17 +1,18 @@
+import { chunk } from 'lodash'
+import { compareSemVer } from '@shared/core-utils'
 import { logger } from '../../helpers/logger'
-import { AbstractScheduler } from './abstract-scheduler'
-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 {
 
   private static instance: AbstractScheduler
 
-  protected schedulerIntervalMs = SCHEDULER_INTERVALS_MS.checkPlugins
+  protected schedulerIntervalMs = SCHEDULER_INTERVALS_MS.CHECK_PLUGINS
 
   private constructor () {
     super()
@@ -32,7 +33,7 @@ export class PluginsCheckScheduler extends AbstractScheduler {
     const chunks = chunk(plugins, 10)
     for (const chunk of chunks) {
       // Find plugins according to their npm name
-      const pluginIndex: { [npmName: string]: PluginModel} = {}
+      const pluginIndex: { [npmName: string]: PluginModel } = {}
       for (const plugin of chunk) {
         pluginIndex[PluginModel.buildNpmName(plugin.name, plugin.type)] = plugin
       }
@@ -43,7 +44,7 @@ export class PluginsCheckScheduler extends AbstractScheduler {
         const results = await getLatestPluginsVersion(npmNames)
 
         for (const result of results) {
-          const plugin = pluginIndex[ result.npmName ]
+          const plugin = pluginIndex[result.npmName]
           if (!result.latestVersion) continue
 
           if (
@@ -53,7 +54,12 @@ export class PluginsCheckScheduler extends AbstractScheduler {
             plugin.latestVersion = result.latestVersion
             await plugin.save()
 
-            logger.info('Plugin %s has a new latest version %s.', PluginModel.buildNpmName(plugin.name, plugin.type), plugin.latestVersion)
+            // 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) {