display source for installed plugins
All checks were successful
Build / Compute Version (push) Successful in 5s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 1m41s
Build / Build Nuget package (NuGet) (push) Successful in 2m0s
Build / Build Nuget package (SharedCringe) (push) Successful in 2m42s
Build / Build Launcher (push) Successful in 3m57s
Build / Build Nuget package (CringePlugins) (push) Successful in 7m55s

This commit is contained in:
zznty
2024-11-04 01:18:56 +07:00
parent a9a203e5a8
commit 03e2eb9551
3 changed files with 16 additions and 10 deletions

View File

@@ -4,7 +4,7 @@ using NuGet.Versioning;
namespace CringePlugins.Loader; namespace CringePlugins.Loader;
public record PluginMetadata(string Name, NuGetVersion Version) public record PluginMetadata(string Name, NuGetVersion Version, string Source)
{ {
public static PluginMetadata ReadFromEntrypoint(string entrypointPath) public static PluginMetadata ReadFromEntrypoint(string entrypointPath)
{ {
@@ -20,6 +20,6 @@ public record PluginMetadata(string Name, NuGetVersion Version)
out var version)) out var version))
version = new(0, 0, 0, 0); version = new(0, 0, 0, 0);
return new(name, version); return new(name, version, "Local");
} }
} }

View File

@@ -60,7 +60,7 @@ public class PluginsLifetime : ILoadingStage
progress.Report("Loading plugins"); progress.Report("Loading plugins");
await LoadPlugins(cachedPackages, sourceMapping); await LoadPlugins(cachedPackages, sourceMapping, packagesConfig);
progress.Report("Registering plugins"); progress.Report("Registering plugins");
@@ -85,7 +85,8 @@ public class PluginsLifetime : ILoadingStage
} }
} }
private async Task LoadPlugins(IReadOnlySet<CachedPackage> packages, PackageSourceMapping sourceMapping) private async Task LoadPlugins(IReadOnlySet<CachedPackage> packages, PackageSourceMapping sourceMapping,
PackagesConfig packagesConfig)
{ {
var plugins = _plugins.ToBuilder(); var plugins = _plugins.ToBuilder();
@@ -107,8 +108,11 @@ public class PluginsLifetime : ILoadingStage
await using (var stream = File.Create(Path.Join(dir, $"{package.Package.Id}.deps.json"))) await using (var stream = File.Create(Path.Join(dir, $"{package.Package.Id}.deps.json")))
await manifestBuilder.WriteDependencyManifestAsync(stream, package.Entry, _runtimeFramework); await manifestBuilder.WriteDependencyManifestAsync(stream, package.Entry, _runtimeFramework);
LoadComponent(plugins, Path.Join(dir, $"{package.Package.Id}.dll"), new(package.Package.Id, package.Package.Version)); var client = await sourceMapping.GetClientAsync(package.Package.Id);
var sourceName = packagesConfig.Sources.First(b => b.Url == client.ToString()).Name;
LoadComponent(plugins, Path.Join(dir, $"{package.Package.Id}.dll"),
new(package.Package.Id, package.Package.Version, sourceName));
} }
_plugins = plugins.ToImmutable(); _plugins = plugins.ToImmutable();

View File

@@ -83,11 +83,11 @@ internal class PluginListComponent : IRenderComponent
// TODO support for opening plugin loader plugin config (reflection call to a specific method) // TODO support for opening plugin loader plugin config (reflection call to a specific method)
if (BeginTabItem("Installed Plugins")) if (BeginTabItem("Installed Plugins"))
{ {
if (BeginTable("InstalledTable", 2, ImGuiTableFlags.ScrollY)) if (BeginTable("InstalledTable", 3, ImGuiTableFlags.ScrollY | ImGuiTableFlags.Resizable))
{ {
//todo: include plugin source (local, zznty nuget, etc) in menu? TableSetupColumn("Id", ImGuiTableColumnFlags.None, .5f);
TableSetupColumn("Id"); TableSetupColumn("Version", ImGuiTableColumnFlags.None, .25f);
TableSetupColumn("Version"); TableSetupColumn("Source", ImGuiTableColumnFlags.None, .25f);
TableHeadersRow(); TableHeadersRow();
foreach (var plugin in _plugins) foreach (var plugin in _plugins)
@@ -101,6 +101,8 @@ internal class PluginListComponent : IRenderComponent
EndDisabled(); EndDisabled();
TableNextColumn(); TableNextColumn();
Text(plugin.Metadata.Version.ToString()); Text(plugin.Metadata.Version.ToString());
TableNextColumn();
Text(plugin.Metadata.Source);
} }
EndTable(); EndTable();