display installed version of package

This commit is contained in:
Matt Parker
2025-11-02 12:47:31 +10:00
parent c7d72ef226
commit a4bec0cc4f
4 changed files with 18 additions and 8 deletions

View File

@@ -9,8 +9,8 @@ using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
namespace SharpIDE.Application.Features.Nuget; namespace SharpIDE.Application.Features.Nuget;
//public record IdePackageResult(IPackageSearchMetadata PackageSearchMetadata, List<PackageSource> PackageSources); public record InstalledNugetPackageInfo(bool IsTransitive, NuGetVersion Version);
public record IdePackageResult(string PackageId, List<IdePackageFromSourceResult> PackageFromSources, bool? IsTransitive); public record IdePackageResult(string PackageId, List<IdePackageFromSourceResult> PackageFromSources, InstalledNugetPackageInfo? InstalledNugetPackageInfo);
public record struct IdePackageFromSourceResult(IPackageSearchMetadata PackageSearchMetadata, PackageSource Source); public record struct IdePackageFromSourceResult(IPackageSearchMetadata PackageSearchMetadata, PackageSource Source);
public class NugetClientService public class NugetClientService
{ {
@@ -119,9 +119,12 @@ public class NugetClientService
foreach (var installedPackage in installedPackages) foreach (var installedPackage in installedPackages)
{ {
var isTransitive = installedPackage.IsTopLevel is false; var isTransitive = installedPackage.IsTopLevel is false;
var idePackageResult = new IdePackageResult(installedPackage.Name, [], isTransitive);
var nugetVersionString = installedPackage.ResolvedVersion ?? installedPackage.RequestedVersion; var nugetVersionString = installedPackage.ResolvedVersion ?? installedPackage.RequestedVersion;
var nugetVersion = NuGetVersion.Parse(nugetVersionString); var nugetVersion = NuGetVersion.Parse(nugetVersionString);
var installedNugetPackageInfo = new InstalledNugetPackageInfo(isTransitive, nugetVersion);
var idePackageResult = new IdePackageResult(installedPackage.Name, [], installedNugetPackageInfo);
var packageIdentity = new PackageIdentity(installedPackage.Name, nugetVersion); var packageIdentity = new PackageIdentity(installedPackage.Name, nugetVersion);
foreach (var source in packageSources) foreach (var source in packageSources)

View File

@@ -54,7 +54,7 @@ public partial class NugetPanel : Control
{ {
foreach (var scene in scenes) foreach (var scene in scenes)
{ {
var container = scene.PackageResult.IsTransitive!.Value ? _implicitlyInstalledPackagesItemList : _installedPackagesVboxContainer; var container = scene.PackageResult.InstalledNugetPackageInfo!.IsTransitive ? _implicitlyInstalledPackagesItemList : _installedPackagesVboxContainer;
container.AddChild(scene); container.AddChild(scene);
} }
}); });

View File

@@ -8,7 +8,8 @@ public partial class PackageEntry : MarginContainer
{ {
private Button _button; private Button _button;
private Label _packageNameLabel = null!; private Label _packageNameLabel = null!;
private Label _currentVersionLabel = null!; private Label _installedVersionLabel = null!;
private Label _implicitlyInstalledVersionLabel = null!;
private Label _latestVersionLabel = null!; private Label _latestVersionLabel = null!;
private HBoxContainer _sourceNamesContainer = null!; private HBoxContainer _sourceNamesContainer = null!;
private TextureRect _packageIconTextureRect = null!; private TextureRect _packageIconTextureRect = null!;
@@ -37,7 +38,8 @@ public partial class PackageEntry : MarginContainer
{ {
_button = GetNode<Button>("Button"); _button = GetNode<Button>("Button");
_packageNameLabel = GetNode<Label>("%PackageNameLabel"); _packageNameLabel = GetNode<Label>("%PackageNameLabel");
_currentVersionLabel = GetNode<Label>("%CurrentVersionLabel"); _installedVersionLabel = GetNode<Label>("%InstalledVersionLabel");
_implicitlyInstalledVersionLabel = GetNode<Label>("%ImplicitlyInstalledVersionLabel");
_latestVersionLabel = GetNode<Label>("%LatestVersionLabel"); _latestVersionLabel = GetNode<Label>("%LatestVersionLabel");
_sourceNamesContainer = GetNode<HBoxContainer>("%SourceNamesHBoxContainer"); _sourceNamesContainer = GetNode<HBoxContainer>("%SourceNamesHBoxContainer");
_packageIconTextureRect = GetNode<TextureRect>("%PackageIconTextureRect"); _packageIconTextureRect = GetNode<TextureRect>("%PackageIconTextureRect");
@@ -49,7 +51,7 @@ public partial class PackageEntry : MarginContainer
{ {
if (PackageResult is null) return; if (PackageResult is null) return;
_packageNameLabel.Text = PackageResult.PackageId; _packageNameLabel.Text = PackageResult.PackageId;
_currentVersionLabel.Text = string.Empty; _installedVersionLabel.Text = PackageResult.InstalledNugetPackageInfo?.Version.ToNormalizedString();
var highestVersionPackageFromSource = PackageResult.PackageFromSources var highestVersionPackageFromSource = PackageResult.PackageFromSources
.MaxBy(p => p.PackageSearchMetadata.Identity.Version); .MaxBy(p => p.PackageSearchMetadata.Identity.Version);
_latestVersionLabel.Text = highestVersionPackageFromSource.PackageSearchMetadata.Identity.Version.ToNormalizedString(); _latestVersionLabel.Text = highestVersionPackageFromSource.PackageSearchMetadata.Identity.Version.ToNormalizedString();

View File

@@ -60,12 +60,17 @@ theme_override_colors/font_color = Color(0.83137256, 0.83137256, 0.83137256, 1)
theme_override_font_sizes/font_size = 16 theme_override_font_sizes/font_size = 16
text = "OpenTelemetry.Exporter.OpenTelemetryProtocol" text = "OpenTelemetry.Exporter.OpenTelemetryProtocol"
[node name="CurrentVersionLabel" type="Label" parent="MarginContainer/HBoxContainer"] [node name="InstalledVersionLabel" type="Label" parent="MarginContainer/HBoxContainer"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1) theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1)
text = "1.12.0" text = "1.12.0"
[node name="ImplicitlyInstalledVersionLabel" type="Label" parent="MarginContainer/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_colors/font_color = Color(0.6706895, 0.6706895, 0.6706895, 1)
[node name="SourceNamesHBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer"] [node name="SourceNamesHBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer"]
unique_name_in_owner = true unique_name_in_owner = true
layout_mode = 2 layout_mode = 2