From e40441e9688d51f69b37587c9f503198b1d30c7e Mon Sep 17 00:00:00 2001 From: jamesshenry Date: Wed, 22 Apr 2026 09:48:52 +0100 Subject: [PATCH 1/2] fix: loom no longer attempts to install dotnet tools automatically --- dotnet-tools.json | 7 +++++ src/Loom.Build/Modules/RestoreToolsModule.cs | 29 ++++---------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/dotnet-tools.json b/dotnet-tools.json index 94a6ea3..187d20e 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -15,6 +15,13 @@ "loom" ], "rollForward": false + }, + "vpk": { + "version": "0.0.1589-ga2c5a97", + "commands": [ + "vpk" + ], + "rollForward": false } } } \ No newline at end of file diff --git a/src/Loom.Build/Modules/RestoreToolsModule.cs b/src/Loom.Build/Modules/RestoreToolsModule.cs index d8637c9..3f613fd 100644 --- a/src/Loom.Build/Modules/RestoreToolsModule.cs +++ b/src/Loom.Build/Modules/RestoreToolsModule.cs @@ -51,33 +51,16 @@ await context if (_loom.RequiresMinVer) { - await context - .DotNet() - .Tool.Execute( - new DotNetToolOptions() { Arguments = ["install", "minver-cli"] }, - executionOptions: new CommandExecutionOptions - { - WorkingDirectory = _loom.WorkingDirectory, - }, - cancellationToken: ct - ); + context.Logger.LogInformation( + "MinVer is required. Please run 'dotnet tool install minver-cli' and commit dotnet-tools.json." + ); } if (_loom.EnableVelopack) { - await context - .DotNet() - .Tool.Execute( - new DotNetToolOptions() - { - Arguments = ["install", "vpk", "--version 0.0.1535-gb21da2a"], - }, - executionOptions: new CommandExecutionOptions - { - WorkingDirectory = _loom.WorkingDirectory, - }, - cancellationToken: ct - ); + context.Logger.LogInformation( + "Velopack is required. Please run 'dotnet tool install vpk --version 0.0.1535-gb21da2a' and commit dotnet-tools.json." + ); } context.Logger.LogInformation("Restoring dotnet local tools..."); From 738bcdc2c141c2e0b2e303a64e3f45f67b6d2608 Mon Sep 17 00:00:00 2001 From: jamesshenry Date: Wed, 22 Apr 2026 09:54:10 +0100 Subject: [PATCH 2/2] chore: remove related test --- .../Unit/RestoreToolsModuleTests.cs | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/Loom.Build.Tests/Unit/RestoreToolsModuleTests.cs b/src/Loom.Build.Tests/Unit/RestoreToolsModuleTests.cs index d653737..232f5cd 100644 --- a/src/Loom.Build.Tests/Unit/RestoreToolsModuleTests.cs +++ b/src/Loom.Build.Tests/Unit/RestoreToolsModuleTests.cs @@ -231,38 +231,38 @@ public async Task ExecuteAsync_DoesNotCreateManifest_WhenManifestExists() } } - [Test] - public async Task ExecuteAsync_InstallsRequiredTools_Always() - { - var tempDir = CreateTemporaryDirectory(); - try - { - System.IO.File.WriteAllText(Path.Combine(tempDir, "dotnet-tools.json"), "{}"); - - // Context requires both minver-cli and vpk - var settings = CreateSettings(requiresMinVer: true, requiresVelopack: true); - var mockDotNet = new Mock(); - - SetupDotNetMocks(mockDotNet, out _, out _, out var toolOptions); - - var builder = CreateSilentPipelineBuilder(settings, tempDir, mockDotNet); - var pipeline = await builder.BuildAsync(); - await pipeline.RunAsync(); - - // Should have 2 install commands - var installCommands = toolOptions.Where(o => o.Arguments!.Contains("install")).ToList(); - await Assert.That(installCommands).Count().IsEqualTo(2); - await Assert - .That(installCommands.Any(o => o.Arguments!.Contains("minver-cli"))) - .IsTrue(); - await Assert.That(installCommands.Any(o => o.Arguments!.Contains("vpk"))).IsTrue(); - } - finally - { - if (Directory.Exists(tempDir)) - Directory.Delete(tempDir, true); - } - } + // [Test] + // public async Task ExecuteAsync_InstallsRequiredTools_Always() + // { + // var tempDir = CreateTemporaryDirectory(); + // try + // { + // System.IO.File.WriteAllText(Path.Combine(tempDir, "dotnet-tools.json"), "{}"); + + // // Context requires both minver-cli and vpk + // var settings = CreateSettings(requiresMinVer: true, requiresVelopack: true); + // var mockDotNet = new Mock(); + + // SetupDotNetMocks(mockDotNet, out _, out _, out var toolOptions); + + // var builder = CreateSilentPipelineBuilder(settings, tempDir, mockDotNet); + // var pipeline = await builder.BuildAsync(); + // await pipeline.RunAsync(); + + // // Should have 2 install commands + // var installCommands = toolOptions.Where(o => o.Arguments!.Contains("install")).ToList(); + // await Assert.That(installCommands).Count().IsEqualTo(2); + // await Assert + // .That(installCommands.Any(o => o.Arguments!.Contains("minver-cli"))) + // .IsTrue(); + // await Assert.That(installCommands.Any(o => o.Arguments!.Contains("vpk"))).IsTrue(); + // } + // finally + // { + // if (Directory.Exists(tempDir)) + // Directory.Delete(tempDir, true); + // } + // } [Test] public async Task ExecuteAsync_RestoresTools_AtEndOfExecution()