Skip to content

Instantly share code, notes, and snippets.

@josh-cooley
Created May 24, 2024 18:43
Show Gist options
  • Save josh-cooley/ed1990df34edd310953ea03cf671ea33 to your computer and use it in GitHub Desktop.
Save josh-cooley/ed1990df34edd310953ea03cf671ea33 to your computer and use it in GitHub Desktop.
private static async Task HandleDependencies(
NuGetFramework framework,
SourceCacheContext cacheContext,
ILogger logger,
IEnumerable<NuGetEndpointResources> resources,
ISet<SourcePackageDependencyInfo> availablePackages,
ISet<PackageDependency> dependencyCache, ChocolateyConfiguration configuration,
IEnumerable<PackageDependency> dependencies)
{
foreach (var dependency in dependencies)
{
var cacheHasBetterDependency = dependencyCache.Any(dc =>
dc.Id == dependency.Id &&
dc.VersionRange.IsSubSetOrEqualTo(dependency.VersionRange));
if (cacheHasBetterDependency)
{
continue;
}
dependencyCache.Add(dependency);
if (dependency.VersionRange.HasLowerAndUpperBounds && dependency.VersionRange.MaxVersion == dependency.VersionRange.MinVersion)
{
await GetPackageDependencies(new PackageIdentity(dependency.Id.ToLower(), dependency.VersionRange.MaxVersion), framework, cacheContext, logger, resources, availablePackages, dependencyCache, configuration);
}
else
{
await GetPackageDependencies(
dependency.Id.ToLower(), framework, cacheContext, logger, resources, availablePackages, dependencyCache, configuration, dependency.VersionRange);
}
}
}
private static async Task HandleDependencies(
NuGetFramework framework,
SourceCacheContext cacheContext,
ILogger logger,
IEnumerable<NuGetEndpointResources> resources,
ISet<SourcePackageDependencyInfo> availablePackages,
ISet<PackageDependency> dependencyCache, ChocolateyConfiguration configuration,
IEnumerable<PackageDependency> dependencies)
{
foreach (var dependency in dependencies)
{
if (dependencyCache.Contains(dependency))
{
continue;
}
dependencyCache.Add(dependency);
if (dependency.VersionRange.HasLowerAndUpperBounds && dependency.VersionRange.MaxVersion == dependency.VersionRange.MinVersion)
{
await GetPackageDependencies(new PackageIdentity(dependency.Id.ToLower(), dependency.VersionRange.MaxVersion), framework, cacheContext, logger, resources, availablePackages, dependencyCache, configuration);
}
else
{
await GetPackageDependencies(
dependency.Id.ToLower(), framework, cacheContext, logger, resources, availablePackages, dependencyCache, configuration, dependency.VersionRange);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment