kind of dependency resolver
All checks were successful
Build / Compute Version (push) Successful in 7s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 31s
Build / Build Nuget package (NuGet) (push) Successful in 41s
Build / Build Nuget package (CringePlugins) (push) Successful in 54s
Build / Build Launcher (push) Successful in 1m37s
Build / Build Nuget package (SharedCringe) (push) Successful in 6m2s
All checks were successful
Build / Compute Version (push) Successful in 7s
Build / Build Nuget package (CringeBootstrap.Abstractions) (push) Successful in 31s
Build / Build Nuget package (NuGet) (push) Successful in 41s
Build / Build Nuget package (CringePlugins) (push) Successful in 54s
Build / Build Launcher (push) Successful in 1m37s
Build / Build Nuget package (SharedCringe) (push) Successful in 6m2s
right now plugin to plugin dependencies are not supported
This commit is contained in:
@@ -56,7 +56,7 @@ public record ManifestPackageKey(string Id, NuGetVersion Version)
|
||||
public override string ToString() => $"{Id}/{Version}";
|
||||
}
|
||||
|
||||
public class DependencyManifestBuilder(DirectoryInfo cacheDirectory, PackageSourceMapping packageSources, Func<Models.Dependency, NuGetVersion?> versionResolver)
|
||||
public class DependencyManifestBuilder(DirectoryInfo cacheDirectory, PackageSourceMapping packageSources, Func<Models.Dependency, CatalogEntry?> catalogEntryResolver)
|
||||
{
|
||||
private static readonly JsonSerializerOptions SerializerOptions = new(JsonSerializerDefaults.Web)
|
||||
{
|
||||
@@ -100,22 +100,11 @@ public class DependencyManifestBuilder(DirectoryInfo cacheDirectory, PackageSour
|
||||
targets.Add(new(catalogEntry.Id, catalogEntry.Version),
|
||||
await MapEntryAsync(catalogEntry, nearest));
|
||||
|
||||
foreach (var dependency in nearest.Dependencies ?? [])
|
||||
foreach (var entry in (nearest.Dependencies ?? []).Select(catalogEntryResolver))
|
||||
{
|
||||
var client = await packageSources.GetClientAsync(dependency.Id);
|
||||
var registrationRoot = await client.GetPackageRegistrationRootAsync(dependency.Id);
|
||||
|
||||
var version = versionResolver(dependency)!;
|
||||
var entry = registrationRoot.Items.SelectMany(b => b.Items ?? []).FirstOrDefault(b => b.CatalogEntry.Version == version)?.CatalogEntry;
|
||||
|
||||
if (entry is null)
|
||||
{
|
||||
var (url, sleetEntry) = await client.GetPackageRegistrationAsync(dependency.Id, versionResolver(dependency)!);
|
||||
|
||||
entry = sleetEntry;
|
||||
entry ??= await client.GetPackageCatalogEntryAsync(url);
|
||||
}
|
||||
|
||||
continue;
|
||||
|
||||
await MapCatalogEntryAsync(entry, targetFramework, targets);
|
||||
}
|
||||
}
|
||||
@@ -123,8 +112,10 @@ public class DependencyManifestBuilder(DirectoryInfo cacheDirectory, PackageSour
|
||||
private async Task<DependencyTarget> MapEntryAsync(CatalogEntry entry, DependencyGroup group)
|
||||
{
|
||||
var packageEntries = entry.PackageEntries ?? await GetPackageContent(entry);
|
||||
|
||||
return new(group.Dependencies?.ToImmutableDictionary(b => b.Id, versionResolver) ?? ImmutableDictionary<string, NuGetVersion>.Empty,
|
||||
|
||||
return new(
|
||||
group.Dependencies?.ToImmutableDictionary(b => b.Id, b => catalogEntryResolver(b)!.Version) ??
|
||||
ImmutableDictionary<string, NuGetVersion>.Empty,
|
||||
packageEntries.Where(b => b.FullName.StartsWith($"lib/{group.TargetFramework.GetShortFolderName()}/"))
|
||||
.ToImmutableDictionary(b => b.FullName, _ => new RuntimeDependency()),
|
||||
packageEntries.Where(b =>
|
||||
|
Reference in New Issue
Block a user