From 71c23a44bb563d2c99a6ae2ee5e471a86df42343 Mon Sep 17 00:00:00 2001 From: Al Rodriguez Date: Fri, 4 Oct 2024 23:16:12 -0400 Subject: [PATCH] Wrapped some work in try/catch blocks so the updater doesn't crash half-way through the process. At a minimum, it will give better error logging for crashes now --- .../CodeUpdater/Updaters/CSharpUpdater.cs | 31 +++++++++++++++++-- .../CodeUpdater/Updaters/NpmUpdater.cs | 20 ++++++++++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/CodeUpdater/CodeUpdater/Updaters/CSharpUpdater.cs b/src/CodeUpdater/CodeUpdater/Updaters/CSharpUpdater.cs index d06df70..a8cedc6 100644 --- a/src/CodeUpdater/CodeUpdater/Updaters/CSharpUpdater.cs +++ b/src/CodeUpdater/CodeUpdater/Updaters/CSharpUpdater.cs @@ -38,8 +38,9 @@ public async ValueTask> UpdateAllCSharpProjec { _logger.Information($"Updating '{csProjFilePath}'"); - var nugetUpdates = await _nugetUpdater.UpdateNugetPackagesAsync(csProjFilePath); - var csProjUpdates = _csProjUpdater.UpdateCsProjPropertyValues(csProjFilePath); + + var nugetUpdates = await UpdateNugetPackagesAsync(csProjFilePath); + var csProjUpdates = UpdateCsProjPropertyValues(csProjFilePath); builder.Add(new CSharpUpdateResult( csProjFilePath, @@ -50,4 +51,30 @@ public async ValueTask> UpdateAllCSharpProjec return builder.ToImmutableArray(); } + + private async ValueTask UpdateNugetPackagesAsync(string csProjFilePath) + { + try + { + return await _nugetUpdater.UpdateNugetPackagesAsync(csProjFilePath); + } + catch (Exception ex) + { + _logger.Error("Error updating nuget packages in csproj file '{CsProjFilePath}'. {Ex}", csProjFilePath, ex.ToString()); + return new NugetUpdateResults(RetrievedPackageListSuccessfully: false, ImmutableArray.Empty); + } + } + + private CsProjUpdateResult UpdateCsProjPropertyValues(string csProjFilePath) + { + try + { + return _csProjUpdater.UpdateCsProjPropertyValues(csProjFilePath); + } + catch (Exception ex) + { + _logger.Error("Error updating csproj file '{CsProjFilePath}'. {Ex}", csProjFilePath, ex.ToString()); + return new CsProjUpdateResult(csProjFilePath, CsprojValueUpdateResultType.Unknown, CsprojValueUpdateResultType.Unknown); + } + } } diff --git a/src/CodeUpdater/CodeUpdater/Updaters/NpmUpdater.cs b/src/CodeUpdater/CodeUpdater/Updaters/NpmUpdater.cs index 5eece7c..8618b91 100644 --- a/src/CodeUpdater/CodeUpdater/Updaters/NpmUpdater.cs +++ b/src/CodeUpdater/CodeUpdater/Updaters/NpmUpdater.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.Tracing; using System.IO; using System.Linq; using System.Text; @@ -18,9 +19,22 @@ public NpmUpdates UpdateNpmPackages(UpdateWork updateWork) { foreach (var projectPath in updateWork.NpmDirectories) { - RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, "npm-check-updates --upgrade"); - RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, "npm install --legacy-peer-deps"); - RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, "npm audit fix --force"); + string command = ""; + try + { + command = "npm-check-updates --upgrade"; + RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, command); + + command = "npm install --legacy-peer-deps"; + RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, command); + + command = "npm audit fix --force"; + RunProcessHelper.RunProwerShellCommandToCompletion(projectPath, command); + } + catch (Exception ex) + { + Log.Error(ex, "Error updating npm packages at path'{ProjectPath}'. Command was '{Command}'", projectPath, command); + } } return new NpmUpdates(updateWork.NpmDirectories);