From 380359b495f234450b21eafd2e64fa84b1bf2dcb Mon Sep 17 00:00:00 2001 From: crobibero Date: Wed, 11 Nov 2020 08:03:30 -0700 Subject: [PATCH] Add migration to readd plugin. --- Jellyfin.Server/Migrations/MigrationRunner.cs | 3 +- .../Routines/DownloadTheTvdbPlugin.cs | 63 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs diff --git a/Jellyfin.Server/Migrations/MigrationRunner.cs b/Jellyfin.Server/Migrations/MigrationRunner.cs index 844dae61f6..68815655b3 100644 --- a/Jellyfin.Server/Migrations/MigrationRunner.cs +++ b/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) }; /// diff --git a/Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs b/Jellyfin.Server/Migrations/Routines/DownloadTheTvdbPlugin.cs new file mode 100644 index 0000000000..0dfb27bc98 --- /dev/null +++ b/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 +{ + /// + /// Download TheTvdb plugin after update. + /// + public class DownloadTheTvdbPlugin : IMigrationRoutine + { + private readonly Guid _tvdbPluginId = new Guid("a677c0da-fac5-4cde-941a-7134223f14c8"); + private readonly IInstallationManager _installationManager; + private readonly ILogger _logger; + + /// + /// Initializes a new instance of the class. + /// + /// Instance of the interface. + /// Instance of the interface. + public DownloadTheTvdbPlugin(IInstallationManager installationManager, ILogger logger) + { + _installationManager = installationManager; + _logger = logger; + } + + /// + public Guid Id => new Guid("42E45BB4-5D78-4EE2-8C45-9095216D4769"); + + /// + public string Name => "DownloadTheTvdbPlugin"; + + /// + public bool PerformOnNewInstall => false; + + /// + 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."); + } + } + } +} \ No newline at end of file