Add migration to readd plugin.

This commit is contained in:
crobibero 2020-11-11 08:03:30 -07:00
parent 3119acd502
commit 380359b495
2 changed files with 65 additions and 1 deletions

View File

@ -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>

View File

@ -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.");
}
}
}
}