dependabot-nuget 0.323.0 → 0.325.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +0 -4
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +1 -31
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/DependencyFinder.cs +0 -3
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/DependencyInfo.cs +1 -0
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/VersionFinder.cs +64 -10
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Clone/CloneWorker.cs +1 -1
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencySolver/MSBuildDependencySolver.cs +10 -4
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +4 -4
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscovery.cs +2 -2
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +31 -41
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -6
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Cooldown.cs +83 -0
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Job.cs +2 -1
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ModifiedFilesTracker.cs +9 -1
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGenerator.cs +6 -0
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +8 -1
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +1 -1
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +79 -67
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +1 -1
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +1 -1
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +1 -1
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/FileWriterWorker.cs +10 -7
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/XmlFileWriter.cs +245 -125
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/LockFileUpdater.cs +4 -11
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +4 -5
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +1 -1
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/DependencyConflictResolver.cs +2 -2
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +14 -31
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +3 -5
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs +12 -13
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/XmlExtensions.cs +3 -3
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +78 -2
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/VersionFinderTests.cs +126 -3
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Clone/CloneWorkerTests.cs +14 -0
  36. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/DependencySolver/MSBuildDependencySolverTests.cs +1 -2
  37. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +2 -2
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +1 -2
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +0 -6
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +2 -3
  41. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/MockNuGetPackage.cs +1 -2
  42. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/ApiModel/CooldownTests.cs +99 -0
  43. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +168 -4
  44. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGeneratorTests.cs +71 -0
  45. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +71 -0
  46. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/GroupUpdateAllVersionsHandlerTests.cs +70 -39
  47. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests.cs +43 -30
  48. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs +76 -3
  49. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +0 -2
  50. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +11 -27
  51. data/lib/dependabot/nuget.rb +3 -11
  52. metadata +8 -54
  53. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +0 -49
  54. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +0 -60
  55. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +0 -35
  56. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +0 -58
  57. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +0 -380
  58. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +0 -557
  59. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.FrameworkCheck.cs +0 -37
  60. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +0 -226
  61. data/lib/dependabot/nuget/analysis/analysis_json_reader.rb +0 -65
  62. data/lib/dependabot/nuget/analysis/dependency_analysis.rb +0 -66
  63. data/lib/dependabot/nuget/cache_manager.rb +0 -29
  64. data/lib/dependabot/nuget/discovery/dependency_details.rb +0 -102
  65. data/lib/dependabot/nuget/discovery/dependency_file_discovery.rb +0 -122
  66. data/lib/dependabot/nuget/discovery/discovery_json_reader.rb +0 -266
  67. data/lib/dependabot/nuget/discovery/evaluation_details.rb +0 -63
  68. data/lib/dependabot/nuget/discovery/project_discovery.rb +0 -104
  69. data/lib/dependabot/nuget/discovery/property_details.rb +0 -43
  70. data/lib/dependabot/nuget/discovery/workspace_discovery.rb +0 -61
  71. data/lib/dependabot/nuget/file_fetcher.rb +0 -46
  72. data/lib/dependabot/nuget/file_parser.rb +0 -153
  73. data/lib/dependabot/nuget/file_updater.rb +0 -256
  74. data/lib/dependabot/nuget/language.rb +0 -98
  75. data/lib/dependabot/nuget/metadata_finder.rb +0 -197
  76. data/lib/dependabot/nuget/native_helpers.rb +0 -364
  77. data/lib/dependabot/nuget/nuget_config_credential_helpers.rb +0 -88
  78. data/lib/dependabot/nuget/package_manager.rb +0 -51
  79. data/lib/dependabot/nuget/update_checker/requirements_updater.rb +0 -105
  80. data/lib/dependabot/nuget/update_checker.rb +0 -210
@@ -72,7 +72,7 @@ public class ModifiedFilesTracker
72
72
  }
73
73
  }
74
74
 
75
- public async Task<ImmutableArray<DependencyFile>> StopTrackingAsync()
75
+ public async Task<ImmutableArray<DependencyFile>> StopTrackingAsync(bool restoreOriginalContents = false)
76
76
  {
77
77
  if (_currentDiscoveryResult is null)
78
78
  {
@@ -108,6 +108,14 @@ public class ModifiedFilesTracker
108
108
  Content = reportedContent,
109
109
  ContentEncoding = encoding,
110
110
  };
111
+
112
+ if (restoreOriginalContents)
113
+ {
114
+ var originalRawContent = originalContent
115
+ .SetEOL(_originalDependencyFileEOFs[repoFullPath])
116
+ .SetBOM(_originalDependencyFileBOMs[repoFullPath]);
117
+ await File.WriteAllBytesAsync(localFullPath, originalRawContent);
118
+ }
111
119
  }
112
120
  }
113
121
 
@@ -57,6 +57,12 @@ internal class DetailedPullRequestBodyGenerator : IPullRequestBodyGenerator, IDi
57
57
  }
58
58
  else
59
59
  {
60
+ if (sourceUrl.EndsWith(".git"))
61
+ {
62
+ // remove the trailing .git if present
63
+ sourceUrl = sourceUrl[..^4];
64
+ }
65
+
60
66
  // build detailed report
61
67
  var packageNameIndex = reportText.IndexOf(updateOperation.DependencyName, StringComparison.OrdinalIgnoreCase);
62
68
  if (packageNameIndex >= 0)
@@ -152,7 +152,7 @@ public class RunWorker
152
152
  }
153
153
  }
154
154
 
155
- internal static DependencyInfo GetDependencyInfo(Job job, Dependency dependency)
155
+ internal static DependencyInfo GetDependencyInfo(Job job, Dependency dependency, bool allowCooldown)
156
156
  {
157
157
  var dependencyVersion = NuGetVersion.Parse(dependency.Version!);
158
158
  var securityAdvisories = job.SecurityAdvisories.Where(s => s.DependencyName.Equals(dependency.Name, StringComparison.OrdinalIgnoreCase)).ToArray();
@@ -175,6 +175,12 @@ public class RunWorker
175
175
  .SelectMany(c => c.UpdateTypes ?? [])
176
176
  .Distinct()
177
177
  .ToImmutableArray();
178
+
179
+ // while it would be nice to lift the cooldown options into the IgnoredUpdateTypes field, we don't know the
180
+ // publish date of the packages, so we have to pass along the whole object for the version finder to sort out
181
+ var includeCooldown = allowCooldown &&
182
+ job.Cooldown is not null &&
183
+ job.Cooldown.AppliesToPackage(dependency.Name);
178
184
  var dependencyInfo = new DependencyInfo()
179
185
  {
180
186
  Name = dependency.Name,
@@ -183,6 +189,7 @@ public class RunWorker
183
189
  IgnoredVersions = ignoredVersions,
184
190
  Vulnerabilities = vulnerabilities,
185
191
  IgnoredUpdateTypes = ignoredUpdateTypes,
192
+ Cooldown = includeCooldown ? job.Cooldown : null,
186
193
  };
187
194
  return dependencyInfo;
188
195
  }
@@ -67,7 +67,7 @@ internal class CreateSecurityUpdatePullRequestHandler : IUpdateHandler
67
67
  {
68
68
  var dependencyName = dependencyGroupToUpdate.Key;
69
69
  var vulnerableCandidateDependenciesToUpdate = dependencyGroupToUpdate.Value
70
- .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency)))
70
+ .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency, allowCooldown: false)))
71
71
  .Where(set => set.Item3.IsVulnerable)
72
72
  .ToArray();
73
73
  var vulnerableDependenciesToUpdate = vulnerableCandidateDependenciesToUpdate
@@ -1,7 +1,6 @@
1
1
  using System.Collections.Immutable;
2
2
 
3
- using NuGet.Versioning;
4
-
3
+ using NuGetUpdater.Core.Discover;
5
4
  using NuGetUpdater.Core.Run.ApiModel;
6
5
  using NuGetUpdater.Core.Updater;
7
6
 
@@ -105,7 +104,7 @@ internal class GroupUpdateAllVersionsHandler : IUpdateHandler
105
104
  continue;
106
105
  }
107
106
 
108
- var dependencyInfo = RunWorker.GetDependencyInfo(job, dependency);
107
+ var dependencyInfo = RunWorker.GetDependencyInfo(job, dependency, allowCooldown: experimentsManager.EnableCooldown);
109
108
  var analysisResult = await analyzeWorker.RunAsync(repoContentsPath.FullName, discoveryResult, dependencyInfo);
110
109
  if (analysisResult.Error is not null)
111
110
  {
@@ -183,86 +182,99 @@ internal class GroupUpdateAllVersionsHandler : IUpdateHandler
183
182
  return;
184
183
  }
185
184
 
186
- var tracker = new ModifiedFilesTracker(originalRepoContentsPath, logger);
187
- await tracker.StartTrackingAsync(discoveryResult);
188
-
189
185
  var updatedDependencyList = RunWorker.GetUpdatedDependencyListFromDiscovery(discoveryResult, originalRepoContentsPath.FullName, logger);
190
186
  await apiHandler.UpdateDependencyList(updatedDependencyList);
191
187
 
192
- var updateOperationsPerformed = new List<UpdateOperationBase>();
193
- var updatedDependencies = new List<ReportedDependency>();
194
- var updateOperationsToPerform = RunWorker.GetUpdateOperations(discoveryResult).ToArray();
195
- foreach (var (projectPath, dependency) in updateOperationsToPerform)
188
+ var updateOperationsToPerformByDependency = CollectUpdateOperationsByDependency(discoveryResult);
189
+ foreach (var sameDependencySet in updateOperationsToPerformByDependency)
196
190
  {
197
- if (!job.IsUpdatePermitted(dependency))
198
- {
199
- continue;
200
- }
191
+ logger.Info($"Starting dependency update for {sameDependencySet.Key}");
192
+ var updateOperationsPerformed = new List<UpdateOperationBase>();
193
+ var updatedDependencies = new List<ReportedDependency>();
194
+ var tracker = new ModifiedFilesTracker(originalRepoContentsPath, logger);
195
+ await tracker.StartTrackingAsync(discoveryResult);
201
196
 
202
- if (job.IsDependencyIgnoredByNameOnly(dependency.Name))
197
+ foreach (var (projectPath, dependency) in sameDependencySet)
203
198
  {
204
- logger.Info($"Skipping ignored dependency {dependency.Name}.");
205
- continue;
206
- }
199
+ if (!job.IsUpdatePermitted(dependency))
200
+ {
201
+ continue;
202
+ }
207
203
 
208
- var dependencyInfo = RunWorker.GetDependencyInfo(job, dependency);
209
- var analysisResult = await analyzeWorker.RunAsync(repoContentsPath.FullName, discoveryResult, dependencyInfo);
210
- if (analysisResult.Error is not null)
211
- {
212
- logger.Error($"Error analyzing {dependency.Name} in {projectPath}: {analysisResult.Error.GetReport()}");
213
- await apiHandler.RecordUpdateJobError(analysisResult.Error, logger);
214
- return;
215
- }
204
+ if (job.IsDependencyIgnoredByNameOnly(dependency.Name))
205
+ {
206
+ logger.Info($"Skipping ignored dependency {dependency.Name}.");
207
+ continue;
208
+ }
216
209
 
217
- if (!analysisResult.CanUpdate)
218
- {
219
- logger.Info($"No updatable version found for {dependency.Name} in {projectPath}.");
220
- continue;
221
- }
210
+ var dependencyInfo = RunWorker.GetDependencyInfo(job, dependency, allowCooldown: experimentsManager.EnableCooldown);
211
+ var analysisResult = await analyzeWorker.RunAsync(repoContentsPath.FullName, discoveryResult, dependencyInfo);
212
+ if (analysisResult.Error is not null)
213
+ {
214
+ logger.Error($"Error analyzing {dependency.Name} in {projectPath}: {analysisResult.Error.GetReport()}");
215
+ await apiHandler.RecordUpdateJobError(analysisResult.Error, logger);
216
+ return;
217
+ }
222
218
 
223
- var projectDiscovery = discoveryResult.GetProjectDiscoveryFromPath(projectPath);
224
- var updaterResult = await updaterWorker.RunAsync(repoContentsPath.FullName, projectPath, dependency.Name, dependency.Version!, analysisResult.UpdatedVersion, dependency.IsTransitive);
225
- if (updaterResult.Error is not null)
226
- {
227
- await apiHandler.RecordUpdateJobError(updaterResult.Error, logger);
228
- continue;
229
- }
219
+ if (!analysisResult.CanUpdate)
220
+ {
221
+ logger.Info($"No updatable version found for {dependency.Name} in {projectPath}.");
222
+ continue;
223
+ }
230
224
 
231
- if (updaterResult.UpdateOperations.Length == 0)
232
- {
233
- continue;
234
- }
225
+ var projectDiscovery = discoveryResult.GetProjectDiscoveryFromPath(projectPath);
226
+ var updaterResult = await updaterWorker.RunAsync(repoContentsPath.FullName, projectPath, dependency.Name, dependency.Version!, analysisResult.UpdatedVersion, dependency.IsTransitive);
227
+ if (updaterResult.Error is not null)
228
+ {
229
+ await apiHandler.RecordUpdateJobError(updaterResult.Error, logger);
230
+ continue;
231
+ }
232
+
233
+ if (updaterResult.UpdateOperations.Length == 0)
234
+ {
235
+ continue;
236
+ }
235
237
 
236
- var patchedUpdateOperations = RunWorker.PatchInOldVersions(updaterResult.UpdateOperations, projectDiscovery);
237
- var updatedDependenciesForThis = patchedUpdateOperations
238
- .Select(o => o.ToReportedDependency(projectPath, updatedDependencyList.Dependencies, analysisResult.UpdatedDependencies))
239
- .ToArray();
238
+ var patchedUpdateOperations = RunWorker.PatchInOldVersions(updaterResult.UpdateOperations, projectDiscovery);
239
+ var updatedDependenciesForThis = patchedUpdateOperations
240
+ .Select(o => o.ToReportedDependency(projectPath, updatedDependencyList.Dependencies, analysisResult.UpdatedDependencies))
241
+ .ToArray();
240
242
 
241
- updatedDependencies.AddRange(updatedDependenciesForThis);
242
- updateOperationsPerformed.AddRange(patchedUpdateOperations);
243
- foreach (var o in patchedUpdateOperations)
244
- {
245
- logger.Info($"Update operation performed: {o.GetReport(includeFileNames: true)}");
243
+ updatedDependencies.AddRange(updatedDependenciesForThis);
244
+ updateOperationsPerformed.AddRange(patchedUpdateOperations);
245
+ foreach (var o in patchedUpdateOperations)
246
+ {
247
+ logger.Info($"Update operation performed: {o.GetReport(includeFileNames: true)}");
248
+ }
246
249
  }
247
- }
248
250
 
249
- var updatedDependencyFiles = await tracker.StopTrackingAsync();
250
- if (updateOperationsPerformed.Count > 0)
251
- {
252
- var commitMessage = PullRequestTextGenerator.GetPullRequestCommitMessage(job, [.. updateOperationsPerformed], null);
253
- var prTitle = PullRequestTextGenerator.GetPullRequestTitle(job, [.. updateOperationsPerformed], null);
254
- var prBody = await PullRequestTextGenerator.GetPullRequestBodyAsync(job, [.. updateOperationsPerformed], [.. updatedDependencies], experimentsManager);
255
- await apiHandler.CreatePullRequest(new CreatePullRequest()
251
+ var updatedDependencyFiles = await tracker.StopTrackingAsync(restoreOriginalContents: true);
252
+ if (updateOperationsPerformed.Count > 0)
256
253
  {
257
- Dependencies = [.. updatedDependencies],
258
- UpdatedDependencyFiles = [.. updatedDependencyFiles],
259
- BaseCommitSha = baseCommitSha,
260
- CommitMessage = commitMessage,
261
- PrTitle = prTitle,
262
- PrBody = prBody,
263
- DependencyGroup = null,
264
- });
254
+ var commitMessage = PullRequestTextGenerator.GetPullRequestCommitMessage(job, [.. updateOperationsPerformed], null);
255
+ var prTitle = PullRequestTextGenerator.GetPullRequestTitle(job, [.. updateOperationsPerformed], null);
256
+ var prBody = await PullRequestTextGenerator.GetPullRequestBodyAsync(job, [.. updateOperationsPerformed], [.. updatedDependencies], experimentsManager);
257
+ await apiHandler.CreatePullRequest(new CreatePullRequest()
258
+ {
259
+ Dependencies = [.. updatedDependencies],
260
+ UpdatedDependencyFiles = [.. updatedDependencyFiles],
261
+ BaseCommitSha = baseCommitSha,
262
+ CommitMessage = commitMessage,
263
+ PrTitle = prTitle,
264
+ PrBody = prBody,
265
+ DependencyGroup = null,
266
+ });
267
+ }
265
268
  }
266
269
  }
267
270
  }
271
+
272
+ internal static ImmutableArray<IGrouping<string, (string ProjectPath, Dependency Dependency)>> CollectUpdateOperationsByDependency(WorkspaceDiscoveryResult discoveryResult)
273
+ {
274
+ var updateOperationsToPerform = RunWorker.GetUpdateOperations(discoveryResult).ToArray();
275
+ var updateOperationsToPerformByDependency = updateOperationsToPerform
276
+ .GroupBy(o => $"{o.Dependency.Name}/{o.Dependency.Version}".ToLowerInvariant())
277
+ .ToImmutableArray();
278
+ return updateOperationsToPerformByDependency;
279
+ }
268
280
  }
@@ -93,7 +93,7 @@ internal class RefreshGroupUpdatePullRequestHandler : IUpdateHandler
93
93
  var dependencyName = dependencyGroupToUpdate.Key;
94
94
  var relevantDependenciesToUpdate = dependencyGroupToUpdate.Value
95
95
  .Where(o => !job.IsDependencyIgnoredByNameOnly(o.Dependency.Name))
96
- .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency)))
96
+ .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency, allowCooldown: experimentsManager.EnableCooldown)))
97
97
  .ToArray();
98
98
 
99
99
  foreach (var (projectPath, dependency, dependencyInfo) in relevantDependenciesToUpdate)
@@ -82,7 +82,7 @@ internal class RefreshSecurityUpdatePullRequestHandler : IUpdateHandler
82
82
  var dependencyName = dependencyGroupToUpdate.Key;
83
83
  var vulnerableDependenciesToUpdate = dependencyGroupToUpdate.Value
84
84
  .Where(o => !job.IsDependencyIgnoredByNameOnly(o.Dependency.Name))
85
- .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency)))
85
+ .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency, allowCooldown: false)))
86
86
  .Where(set => set.Item3.IsVulnerable)
87
87
  .ToArray();
88
88
 
@@ -81,7 +81,7 @@ internal class RefreshVersionUpdatePullRequestHandler : IUpdateHandler
81
81
  var dependencyName = dependencyUpdatesToPerform.Key;
82
82
  var dependencyInfosToUpdate = dependencyUpdatesToPerform.Value
83
83
  .Where(o => !job.IsDependencyIgnoredByNameOnly(o.Dependency.Name))
84
- .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency)))
84
+ .Select(o => (o.ProjectPath, o.Dependency, RunWorker.GetDependencyInfo(job, o.Dependency, allowCooldown: experimentsManager.EnableCooldown)))
85
85
  .ToArray();
86
86
 
87
87
  foreach (var (projectPath, dependency, dependencyInfo) in dependencyInfosToUpdate)
@@ -38,13 +38,17 @@ public class FileWriterWorker
38
38
  var nonProjectUpdates = await ProcessNonProjectUpdatesAsync(repoContentsPath, initialProjectDirectory, dependencyName, oldDependencyVersion, newDependencyVersion);
39
39
  updateOperations.AddRange(nonProjectUpdates);
40
40
 
41
- // then try packages.config updates
42
- var packagesConfigUpdates = await ProcessPackagesConfigUpdatesAsync(repoContentsPath, projectPath, dependencyName, oldDependencyVersion, newDependencyVersion);
43
- updateOperations.AddRange(packagesConfigUpdates);
41
+ var projectExtension = projectPath.Extension.ToLowerInvariant();
42
+ if (XmlFileWriter.SupportedProjectFileExtensions.Contains(projectExtension))
43
+ {
44
+ // then try packages.config updates
45
+ var packagesConfigUpdates = await ProcessPackagesConfigUpdatesAsync(repoContentsPath, projectPath, dependencyName, oldDependencyVersion, newDependencyVersion);
46
+ updateOperations.AddRange(packagesConfigUpdates);
44
47
 
45
- // then try project updates
46
- var packageReferenceUpdates = await ProcessPackageReferenceUpdatesAsync(repoContentsPath, initialProjectDirectory, projectPath, dependencyName, newDependencyVersion);
47
- updateOperations.AddRange(packageReferenceUpdates);
48
+ // then try project updates
49
+ var packageReferenceUpdates = await ProcessPackageReferenceUpdatesAsync(repoContentsPath, initialProjectDirectory, projectPath, dependencyName, newDependencyVersion);
50
+ updateOperations.AddRange(packageReferenceUpdates);
51
+ }
48
52
 
49
53
  var normalizedUpdateOperations = UpdateOperationBase.NormalizeUpdateOperationCollection(repoContentsPath.FullName, updateOperations);
50
54
  return normalizedUpdateOperations;
@@ -250,7 +254,6 @@ public class FileWriterWorker
250
254
  initialTopLevelDependencies,
251
255
  desiredDependencies,
252
256
  resolvedDependencies.Value,
253
- new ExperimentsManager(),
254
257
  _logger);
255
258
  var filteredUpdateOperations = computedUpdateOperations
256
259
  .Where(op =>