refactor(core): preserve exception in PluginDiscoveryResult + order deterministically
Addresses code quality review of 9161868:
- PluginDiscoveryResult.Error is now Exception? rather than string?,
preserving stack traces across the plugin boundary for logging
- PluginDiscovery.Scan orders subdirectories by ordinal string comparison
so plugin load order is reproducible across platforms
This commit is contained in:
parent
91618682e2
commit
42480cc751
1 changed files with 3 additions and 3 deletions
|
|
@ -3,7 +3,7 @@ namespace AcDream.Core.Plugins;
|
||||||
public sealed record PluginDiscoveryResult(
|
public sealed record PluginDiscoveryResult(
|
||||||
string PluginDirectory,
|
string PluginDirectory,
|
||||||
PluginManifest? Manifest,
|
PluginManifest? Manifest,
|
||||||
string? Error)
|
Exception? Error)
|
||||||
{
|
{
|
||||||
public bool Success => Manifest is not null && Error is null;
|
public bool Success => Manifest is not null && Error is null;
|
||||||
}
|
}
|
||||||
|
|
@ -16,7 +16,7 @@ public static class PluginDiscovery
|
||||||
return Array.Empty<PluginDiscoveryResult>();
|
return Array.Empty<PluginDiscoveryResult>();
|
||||||
|
|
||||||
var results = new List<PluginDiscoveryResult>();
|
var results = new List<PluginDiscoveryResult>();
|
||||||
foreach (var subdir in Directory.EnumerateDirectories(pluginsRootDirectory))
|
foreach (var subdir in Directory.EnumerateDirectories(pluginsRootDirectory).OrderBy(p => p, StringComparer.Ordinal))
|
||||||
{
|
{
|
||||||
var manifestPath = Path.Combine(subdir, "plugin.json");
|
var manifestPath = Path.Combine(subdir, "plugin.json");
|
||||||
if (!File.Exists(manifestPath))
|
if (!File.Exists(manifestPath))
|
||||||
|
|
@ -30,7 +30,7 @@ public static class PluginDiscovery
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
results.Add(new PluginDiscoveryResult(subdir, null, ex.Message));
|
results.Add(new PluginDiscoveryResult(subdir, null, ex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue