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(
|
||||
string PluginDirectory,
|
||||
PluginManifest? Manifest,
|
||||
string? Error)
|
||||
Exception? Error)
|
||||
{
|
||||
public bool Success => Manifest is not null && Error is null;
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@ public static class PluginDiscovery
|
|||
return Array.Empty<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");
|
||||
if (!File.Exists(manifestPath))
|
||||
|
|
@ -30,7 +30,7 @@ public static class PluginDiscovery
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
results.Add(new PluginDiscoveryResult(subdir, null, ex.Message));
|
||||
results.Add(new PluginDiscoveryResult(subdir, null, ex));
|
||||
}
|
||||
}
|
||||
return results;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue