@@ -17,6 +17,8 @@ internal sealed partial class FeedManager : IDisposable
1717 private readonly IFileProvider fileProvider ;
1818 private readonly DependencyDirectory emptyPackageDirectory ;
1919 private readonly ImmutableHashSet < string > privateRegistryFeeds ;
20+ private readonly ImmutableHashSet < string > defaultFeeds ;
21+
2022 private readonly IFeedManagerIO feedManagerIo ;
2123
2224 /// <summary>
@@ -72,6 +74,13 @@ internal sealed partial class FeedManager : IDisposable
7274 /// </summary>
7375 public ImmutableHashSet < string > ReachableFallbackFeeds => lazyReachableFallbackFeeds . Value ;
7476
77+ private readonly Lazy < ImmutableHashSet < string > > lazyReachableDefaultFeeds ;
78+
79+ /// <summary>
80+ /// Gets the list of reachable default NuGet feeds.
81+ /// </summary>
82+ public ImmutableHashSet < string > ReachableDefaultFeeds => lazyReachableDefaultFeeds . Value ;
83+
7584 public FeedManager ( ILogger logger , IDotNet dotnet , IDependabotProxy ? dependabotProxy , IFileProvider fileProvider , IFeedManagerIO feedManagerIo )
7685 {
7786 this . logger = logger ;
@@ -80,6 +89,9 @@ public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotP
8089 this . feedManagerIo = feedManagerIo ;
8190 privateRegistryFeeds = dependabotProxy ? . RegistryURLs ?? [ ] ;
8291 HasPrivateRegistryFeeds = privateRegistryFeeds . Count > 0 ;
92+ defaultFeeds = dependabotProxy ? . RegistryBaseURLs . Any ( ) == true
93+ ? dependabotProxy . RegistryBaseURLs
94+ : [ PublicNugetOrgFeed ] ;
8395 emptyPackageDirectory = new DependencyDirectory ( "empty" , "empty package" , logger ) ;
8496
8597 lazyExplicitFeeds = new Lazy < ImmutableHashSet < string > > ( GetExplicitFeeds ) ;
@@ -96,6 +108,7 @@ public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotP
96108 var reachableFallbackFeeds = GetReachableFallbackNugetFeeds ( ) ;
97109 return reachableFallbackFeeds . ToImmutableHashSet ( ) ;
98110 } ) ;
111+ lazyReachableDefaultFeeds = new Lazy < ImmutableHashSet < string > > ( ( ) => CheckSpecifiedFeeds ( defaultFeeds ) ) ;
99112 }
100113
101114 public FeedManager ( ILogger logger , IDotNet dotnet , IDependabotProxy ? dependabotProxy , IFileProvider fileProvider )
@@ -266,22 +279,6 @@ private ImmutableHashSet<string> CheckSpecifiedFeeds(ImmutableHashSet<string> fe
266279 return reachable . Union ( feeds . Where ( feed => excludedFeeds . Contains ( feed ) ) ) . ToImmutableHashSet ( ) ;
267280 }
268281
269- /// <summary>
270- /// Return true if the default NuGet feed is reachable, false otherwise.
271- /// If the reachability check is disabled, this method will always return true.
272- /// </summary>
273- /// <returns>True if the default NuGet feed is reachable, false otherwise.</returns>
274- public bool IsDefaultFeedReachable ( )
275- {
276- if ( CheckNugetFeedResponsiveness )
277- {
278- var ( initialTimeout , tryCount ) = GetFeedRequestSettings ( isFallback : false ) ;
279- return feedManagerIo . IsFeedReachable ( PublicNugetOrgFeed , initialTimeout , tryCount ) ;
280- }
281-
282- return true ;
283- }
284-
285282 /// <summary>
286283 /// Tests which of the feeds given by <paramref name="feedsToCheck"/> are reachable.
287284 /// </summary>
@@ -315,8 +312,8 @@ private List<string> GetReachableFallbackNugetFeeds()
315312 var fallbackFeeds = EnvironmentVariables . GetURLs ( EnvironmentVariableNames . FallbackNugetFeeds ) . ToHashSet ( ) ;
316313 if ( fallbackFeeds . Count == 0 )
317314 {
318- fallbackFeeds . Add ( PublicNugetOrgFeed ) ;
319- logger . LogInfo ( $ "No fallback NuGet feeds specified. Adding default feed : { PublicNugetOrgFeed } ") ;
315+ fallbackFeeds . UnionWith ( defaultFeeds ) ;
316+ logger . LogInfo ( $ "No fallback NuGet feeds specified. Adding default feeds : { string . Join ( ", " , defaultFeeds . OrderBy ( f => f ) ) } ") ;
320317
321318 var shouldAddNugetConfigFeeds = EnvironmentVariables . GetBooleanOptOut ( EnvironmentVariableNames . AddNugetConfigFeedsToFallback ) ;
322319 logger . LogInfo ( $ "Adding feeds from nuget.config to fallback restore: { shouldAddNugetConfigFeeds } ") ;
0 commit comments