fix nuget
All checks were successful
Build / Compute Version (push) Successful in 5s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 2m38s
Build / Build Nuget package (NuGet) (push) Successful in 2m24s
Build / Build Nuget package (CringePlugins) (push) Successful in 2m48s
Build / Build Nuget package (SharedCringe) (push) Successful in 2m29s
Build / Build Launcher (push) Successful in 3m50s

This commit is contained in:
zznty
2024-10-28 00:46:37 +07:00
parent f75e4e7b4a
commit 78be6bd837
20 changed files with 472 additions and 93 deletions

View File

@@ -12,7 +12,7 @@ public class PackageResolver(NuGetFramework runtimeFramework, ImmutableArray<Pac
public async Task<ImmutableHashSet<ResolvedPackage>> ResolveAsync()
{
var order = 0;
var packages = new SortedSet<Package>();
var packages = new SortedDictionary<Package, CatalogEntry>();
foreach (var reference in references)
{
@@ -20,25 +20,25 @@ public class PackageResolver(NuGetFramework runtimeFramework, ImmutableArray<Pac
var registrationRoot = await client.GetPackageRegistrationRootAsync(reference.Id);
NuGetVersion? version = null;
foreach (var page in registrationRoot.Items)
{
version = reference.Range.FindBestMatch(page.Items.Where(b => b.CatalogEntry.PackageTypes is [{ Name: "CringePlugin" }]).Select(b => b.CatalogEntry.Version));
if (version is not null)
break;
}
var items = registrationRoot.Items.SelectMany(page =>
page.Items.Where(b => b.CatalogEntry.PackageTypes is ["CringePlugin"]))
.ToImmutableDictionary(b => b.CatalogEntry.Version);
var version = reference.Range.FindBestMatch(items.Values.Select(b => b.CatalogEntry.Version));
if (version is null)
throw new Exception($"Unable to find version for package {reference.Id}");
var package = new Package(order, reference.Id, version, []); // todo resolve dependencies
if (packages.Add(package))
if (packages.TryAdd(package, items[version].CatalogEntry))
continue;
if (!packages.TryGetValue(package, out var existingPackage))
if (!packages.TryGetValue(package, out _))
throw new Exception($"Duplicate package {package.Id}");
var existingPackage = packages.Keys.First(b => b.Version == package.Version && b.Id == package.Id);
if (package.Version < existingPackage.Version)
throw new Exception($"Package reference {package.Id} has lower version {package.Version} than already resolved {existingPackage.Version}");
@@ -49,17 +49,13 @@ public class PackageResolver(NuGetFramework runtimeFramework, ImmutableArray<Pac
packages.Add(package with
{
Order = ++order
});
}, items[version].CatalogEntry);
}
var set = ImmutableHashSet<ResolvedPackage>.Empty.ToBuilder();
foreach (var package in packages)
foreach (var (package, catalogEntry) in packages)
{
var client = await packageSources.GetClientAsync(package.Id);
var (catalogEntryUrl, catalogEntry) = await client.GetPackageRegistrationAsync(package.Id, package.Version);
catalogEntry ??= await client.GetPackageCatalogEntryAsync(catalogEntryUrl);
var nearestGroup = NuGetFrameworkUtility.GetNearest(catalogEntry.DependencyGroups, runtimeFramework,
g => g.TargetFramework);