瀏覽代碼

Add migration to readd plugin.

crobibero 4 年之前
父節點
當前提交
380359b495

+ 2 - 1
Jellyfin.Server/Migrations/MigrationRunner.cs

@@ -23,7 +23,8 @@ namespace Jellyfin.Server.Migrations
             typeof(Routines.AddDefaultPluginRepository),
             typeof(Routines.MigrateUserDb),
             typeof(Routines.ReaddDefaultPluginRepository),
-            typeof(Routines.MigrateDisplayPreferencesDb)
+            typeof(Routines.MigrateDisplayPreferencesDb),
+            typeof(Routines.DownloadTheTvdbPlugin)
         };
 
         /// <summary>

+ 63 - 0
Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs

@@ -0,0 +1,63 @@
+using System;
+using System.Linq;
+using MediaBrowser.Common.Updates;
+using Microsoft.Extensions.Logging;
+
+namespace Jellyfin.Server.Migrations.Routines
+{
+    /// <summary>
+    /// Download TheTvdb plugin after update.
+    /// </summary>
+    public class DownloadTheTvdbPlugin : IMigrationRoutine
+    {
+        private readonly Guid _tvdbPluginId = new Guid("a677c0da-fac5-4cde-941a-7134223f14c8");
+        private readonly IInstallationManager _installationManager;
+        private readonly ILogger<DownloadTheTvdbPlugin> _logger;
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="DownloadTheTvdbPlugin"/> class.
+        /// </summary>
+        /// <param name="installationManager">Instance of the <see cref="IInstallationManager"/> interface.</param>
+        /// <param name="logger">Instance of the <see cref="ILogger{DownloadTvdbPlugin}"/> interface.</param>
+        public DownloadTheTvdbPlugin(IInstallationManager installationManager, ILogger<DownloadTheTvdbPlugin> logger)
+        {
+            _installationManager = installationManager;
+            _logger = logger;
+        }
+
+        /// <inheritdoc />
+        public Guid Id => new Guid("42E45BB4-5D78-4EE2-8C45-9095216D4769");
+
+        /// <inheritdoc />
+        public string Name => "DownloadTheTvdbPlugin";
+
+        /// <inheritdoc />
+        public bool PerformOnNewInstall => false;
+
+        /// <inheritdoc />
+        public void Perform()
+        {
+            try
+            {
+                var packages = _installationManager.GetAvailablePackages().GetAwaiter().GetResult();
+                var package = _installationManager.GetCompatibleVersions(
+                        packages,
+                        guid: _tvdbPluginId)
+                    .FirstOrDefault();
+
+                if (package == null)
+                {
+                    _logger.LogWarning("TheTVDB Plugin not found, skipping migration.");
+                    return;
+                }
+
+                _installationManager.InstallPackage(package).GetAwaiter().GetResult();
+                _logger.LogInformation("TheTVDB Plugin installed, please restart Jellyfin.");
+            }
+            catch (Exception e)
+            {
+                _logger.LogWarning(e, "Unable to install TheTVDB Plugin.");
+            }
+        }
+    }
+}