separate transitive and top level packages in UI
This commit is contained in:
@@ -10,7 +10,7 @@ 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 IdePackageResult(IPackageSearchMetadata PackageSearchMetadata, List<PackageSource> PackageSources);
|
||||||
public record IdePackageResult(string PackageId, List<IdePackageFromSourceResult> PackageFromSources);
|
public record IdePackageResult(string PackageId, List<IdePackageFromSourceResult> PackageFromSources, bool? IsTransitive);
|
||||||
public record struct IdePackageFromSourceResult(IPackageSearchMetadata PackageSearchMetadata, PackageSource Source);
|
public record struct IdePackageFromSourceResult(IPackageSearchMetadata PackageSearchMetadata, PackageSource Source);
|
||||||
public class NugetClientService
|
public class NugetClientService
|
||||||
{
|
{
|
||||||
@@ -42,7 +42,7 @@ public class NugetClientService
|
|||||||
log: _nugetLogger,
|
log: _nugetLogger,
|
||||||
cancellationToken: cancellationToken).ConfigureAwait(false);
|
cancellationToken: cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
packagesResult.AddRange(results.Select(s => new IdePackageResult(s.Identity.Id, [new IdePackageFromSourceResult(s, source)])));
|
packagesResult.AddRange(results.Select(s => new IdePackageResult(s.Identity.Id, [new IdePackageFromSourceResult(s, source)], null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Combine, group, and order by download count
|
// Combine, group, and order by download count
|
||||||
@@ -118,12 +118,12 @@ public class NugetClientService
|
|||||||
var packagesResult = new List<IdePackageResult>();
|
var packagesResult = new List<IdePackageResult>();
|
||||||
foreach (var installedPackage in installedPackages)
|
foreach (var installedPackage in installedPackages)
|
||||||
{
|
{
|
||||||
var idePackageResult = new IdePackageResult(installedPackage.Name, []);
|
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 packageIdentity = new PackageIdentity(installedPackage.Name, nugetVersion);
|
var packageIdentity = new PackageIdentity(installedPackage.Name, nugetVersion);
|
||||||
|
|
||||||
|
|
||||||
foreach (var source in packageSources)
|
foreach (var source in packageSources)
|
||||||
{
|
{
|
||||||
var repository = Repository.Factory.GetCoreV3(source.Source);
|
var repository = Repository.Factory.GetCoreV3(source.Source);
|
||||||
@@ -139,10 +139,7 @@ public class NugetClientService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (idePackageResult.PackageFromSources.Count > 0)
|
packagesResult.Add(idePackageResult);
|
||||||
{
|
|
||||||
packagesResult.Add(idePackageResult);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return packagesResult;
|
return packagesResult;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ public partial class NugetPanel : Control
|
|||||||
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
|
_availablePackagesItemList = GetNode<VBoxContainer>("%AvailablePackagesVBoxContainer");
|
||||||
_nugetPackageDetails = GetNode<NugetPackageDetails>("%NugetPackageDetails");
|
_nugetPackageDetails = GetNode<NugetPackageDetails>("%NugetPackageDetails");
|
||||||
_nugetPackageDetails.Visible = false;
|
_nugetPackageDetails.Visible = false;
|
||||||
|
_installedPackagesVboxContainer.QueueFreeChildren();
|
||||||
|
_implicitlyInstalledPackagesItemList.QueueFreeChildren();
|
||||||
|
_availablePackagesItemList.QueueFreeChildren();
|
||||||
|
|
||||||
_ = Task.GodotRun(async () =>
|
_ = Task.GodotRun(async () =>
|
||||||
{
|
{
|
||||||
@@ -39,7 +42,6 @@ public partial class NugetPanel : Control
|
|||||||
var project = Solution.AllProjects.First(s => s.Name == "ProjectB");
|
var project = Solution.AllProjects.First(s => s.Name == "ProjectB");
|
||||||
await project.MsBuildEvaluationProjectTask;
|
await project.MsBuildEvaluationProjectTask;
|
||||||
var installedPackages = await ProjectEvaluation.GetPackageReferencesForProject(project);
|
var installedPackages = await ProjectEvaluation.GetPackageReferencesForProject(project);
|
||||||
await this.InvokeAsync(() => _installedPackagesVboxContainer.QueueFreeChildren());
|
|
||||||
var idePackageResult = await _nugetClientService.GetPackagesForInstalledPackages(project.ChildNodeBasePath, installedPackages);
|
var idePackageResult = await _nugetClientService.GetPackagesForInstalledPackages(project.ChildNodeBasePath, installedPackages);
|
||||||
var scenes = idePackageResult.Select(s =>
|
var scenes = idePackageResult.Select(s =>
|
||||||
{
|
{
|
||||||
@@ -52,11 +54,11 @@ public partial class NugetPanel : Control
|
|||||||
{
|
{
|
||||||
foreach (var scene in scenes)
|
foreach (var scene in scenes)
|
||||||
{
|
{
|
||||||
_installedPackagesVboxContainer.AddChild(scene);
|
var container = scene.PackageResult.IsTransitive!.Value ? _implicitlyInstalledPackagesItemList : _installedPackagesVboxContainer;
|
||||||
|
container.AddChild(scene);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
await this.InvokeAsync(() => _availablePackagesItemList.QueueFreeChildren());
|
|
||||||
var scenes = result.Select(s =>
|
var scenes = result.Select(s =>
|
||||||
{
|
{
|
||||||
var scene = _packageEntryScene.Instantiate<PackageEntry>();
|
var scene = _packageEntryScene.Instantiate<PackageEntry>();
|
||||||
|
|||||||
Reference in New Issue
Block a user