@@ -17,6 +17,7 @@ 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 ;
2021 private readonly IFeedManagerIO feedManagerIo ;
2122
2223 /// <summary>
@@ -72,6 +73,13 @@ internal sealed partial class FeedManager : IDisposable
7273 /// </summary>
7374 public ImmutableHashSet < string > ReachableFallbackFeeds => lazyReachableFallbackFeeds . Value ;
7475
76+ private readonly Lazy < ImmutableHashSet < string > > lazyReachableDefaultFeeds ;
77+
78+ /// <summary>
79+ /// Gets the list of reachable default NuGet feeds.
80+ /// </summary>
81+ public ImmutableHashSet < string > ReachableDefaultFeeds => lazyReachableDefaultFeeds . Value ;
82+
7583 public FeedManager ( ILogger logger , IDotNet dotnet , IDependabotProxy ? dependabotProxy , IFileProvider fileProvider , IFeedManagerIO feedManagerIo )
7684 {
7785 this . logger = logger ;
@@ -80,6 +88,9 @@ public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotP
8088 this . feedManagerIo = feedManagerIo ;
8189 privateRegistryFeeds = dependabotProxy ? . RegistryURLs ?? [ ] ;
8290 HasPrivateRegistryFeeds = privateRegistryFeeds . Count > 0 ;
91+ defaultFeeds = dependabotProxy ? . RegistryBaseURLs . Any ( ) == true
92+ ? dependabotProxy . RegistryBaseURLs
93+ : [ PublicNugetOrgFeed ] ;
8394 emptyPackageDirectory = new DependencyDirectory ( "empty" , "empty package" , logger ) ;
8495
8596 lazyExplicitFeeds = new Lazy < ImmutableHashSet < string > > ( GetExplicitFeeds ) ;
@@ -96,6 +107,7 @@ public FeedManager(ILogger logger, IDotNet dotnet, IDependabotProxy? dependabotP
96107 var reachableFallbackFeeds = GetReachableFallbackNugetFeeds ( ) ;
97108 return reachableFallbackFeeds . ToImmutableHashSet ( ) ;
98109 } ) ;
110+ lazyReachableDefaultFeeds = new Lazy < ImmutableHashSet < string > > ( ( ) => CheckSpecifiedFeeds ( defaultFeeds ) ) ;
99111 }
100112
101113 public FeedManager ( ILogger logger , IDotNet dotnet , IDependabotProxy ? dependabotProxy , IFileProvider fileProvider )
@@ -266,22 +278,6 @@ private ImmutableHashSet<string> CheckSpecifiedFeeds(ImmutableHashSet<string> fe
266278 return reachable . Union ( feeds . Where ( feed => excludedFeeds . Contains ( feed ) ) ) . ToImmutableHashSet ( ) ;
267279 }
268280
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-
285281 /// <summary>
286282 /// Tests which of the feeds given by <paramref name="feedsToCheck"/> are reachable.
287283 /// </summary>
@@ -315,8 +311,8 @@ private List<string> GetReachableFallbackNugetFeeds()
315311 var fallbackFeeds = EnvironmentVariables . GetURLs ( EnvironmentVariableNames . FallbackNugetFeeds ) . ToHashSet ( ) ;
316312 if ( fallbackFeeds . Count == 0 )
317313 {
318- fallbackFeeds . Add ( PublicNugetOrgFeed ) ;
319- logger . LogInfo ( $ "No fallback NuGet feeds specified. Adding default feed : { PublicNugetOrgFeed } ") ;
314+ fallbackFeeds . UnionWith ( defaultFeeds ) ;
315+ logger . LogInfo ( $ "No fallback NuGet feeds specified. Adding default feeds : { string . Join ( ", " , defaultFeeds . OrderBy ( f => f ) ) } ") ;
320316
321317 var shouldAddNugetConfigFeeds = EnvironmentVariables . GetBooleanOptOut ( EnvironmentVariableNames . AddNugetConfigFeedsToFallback ) ;
322318 logger . LogInfo ( $ "Adding feeds from nuget.config to fallback restore: { shouldAddNugetConfigFeeds } ") ;
0 commit comments