fix: fail gracefully for corrupted manifests

This commit is contained in:
goat 2022-09-04 21:49:15 +02:00
parent 0599b4628b
commit 0ee5843676
No known key found for this signature in database
GPG key ID: 49E2AA8C6A76498B

View file

@ -353,6 +353,8 @@ internal partial class PluginManager : IDisposable, IServiceType
{
var versionsDefs = new List<PluginDef>();
foreach (var versionDir in pluginDir.GetDirectories())
{
try
{
var dllFile = new FileInfo(Path.Combine(versionDir.FullName, $"{pluginDir.Name}.dll"));
var manifestFile = LocalPluginManifest.GetManifestFile(dllFile);
@ -364,6 +366,11 @@ internal partial class PluginManager : IDisposable, IServiceType
versionsDefs.Add(new PluginDef(dllFile, manifest, false));
}
catch (Exception ex)
{
Log.Error(ex, "Could not load manifest for installed at {Directory}", versionDir.FullName);
}
}
try
{
@ -394,6 +401,8 @@ internal partial class PluginManager : IDisposable, IServiceType
}
foreach (var dllFile in devDllFiles)
{
try
{
// Manifests are not required for devPlugins. the Plugin type will handle any null manifests.
var manifestFile = LocalPluginManifest.GetManifestFile(dllFile);
@ -407,6 +416,11 @@ internal partial class PluginManager : IDisposable, IServiceType
devPluginDefs.Add(new PluginDef(dllFile, manifest, true));
}
catch (Exception ex)
{
Log.Error(ex, "Could not load manifest for dev at {Directory}", dllFile.FullName);
}
}
// Sort for load order - unloaded definitions have default priority of 0
pluginDefs.Sort(PluginDef.Sorter);