From 03e2eb9551fe159181310c0ae73aeb189f9b751d Mon Sep 17 00:00:00 2001 From: zznty <94796179+zznty@users.noreply.github.com> Date: Mon, 4 Nov 2024 01:18:56 +0700 Subject: [PATCH] display source for installed plugins --- CringePlugins/Loader/PluginMetadata.cs | 4 ++-- CringePlugins/Loader/PluginsLifetime.cs | 12 ++++++++---- CringePlugins/Ui/PluginListComponent.cs | 10 ++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CringePlugins/Loader/PluginMetadata.cs b/CringePlugins/Loader/PluginMetadata.cs index dda683c..027abf5 100644 --- a/CringePlugins/Loader/PluginMetadata.cs +++ b/CringePlugins/Loader/PluginMetadata.cs @@ -4,7 +4,7 @@ using NuGet.Versioning; 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) { @@ -20,6 +20,6 @@ public record PluginMetadata(string Name, NuGetVersion Version) out var version)) version = new(0, 0, 0, 0); - return new(name, version); + return new(name, version, "Local"); } } \ No newline at end of file diff --git a/CringePlugins/Loader/PluginsLifetime.cs b/CringePlugins/Loader/PluginsLifetime.cs index c852a55..6e3221e 100644 --- a/CringePlugins/Loader/PluginsLifetime.cs +++ b/CringePlugins/Loader/PluginsLifetime.cs @@ -60,7 +60,7 @@ public class PluginsLifetime : ILoadingStage progress.Report("Loading plugins"); - await LoadPlugins(cachedPackages, sourceMapping); + await LoadPlugins(cachedPackages, sourceMapping, packagesConfig); progress.Report("Registering plugins"); @@ -85,7 +85,8 @@ public class PluginsLifetime : ILoadingStage } } - private async Task LoadPlugins(IReadOnlySet packages, PackageSourceMapping sourceMapping) + private async Task LoadPlugins(IReadOnlySet packages, PackageSourceMapping sourceMapping, + PackagesConfig packagesConfig) { 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 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(); diff --git a/CringePlugins/Ui/PluginListComponent.cs b/CringePlugins/Ui/PluginListComponent.cs index 65123a8..5a17c09 100644 --- a/CringePlugins/Ui/PluginListComponent.cs +++ b/CringePlugins/Ui/PluginListComponent.cs @@ -83,11 +83,11 @@ internal class PluginListComponent : IRenderComponent // TODO support for opening plugin loader plugin config (reflection call to a specific method) 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"); - TableSetupColumn("Version"); + TableSetupColumn("Id", ImGuiTableColumnFlags.None, .5f); + TableSetupColumn("Version", ImGuiTableColumnFlags.None, .25f); + TableSetupColumn("Source", ImGuiTableColumnFlags.None, .25f); TableHeadersRow(); foreach (var plugin in _plugins) @@ -101,6 +101,8 @@ internal class PluginListComponent : IRenderComponent EndDisabled(); TableNextColumn(); Text(plugin.Metadata.Version.ToString()); + TableNextColumn(); + Text(plugin.Metadata.Source); } EndTable();