From bb0dce7e63ebfb21ace38d5ba6d0c3ec926dc3e1 Mon Sep 17 00:00:00 2001 From: Jimmy Byrd Date: Sat, 31 Aug 2024 09:53:16 -0400 Subject: [PATCH] Allow `RunSettingsArguments` to be set (#2771) --- RELEASE_NOTES.md | 5 +-- src/app/Fake.DotNet.Cli/DotNet.fs | 32 +++++++++++++------ .../Fake.Core.UnitTests/Fake.DotNet.Cli.fs | 20 +++++++++++- 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 469bf8d61b2..7cc2e522584 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,8 +1,9 @@ # Release Notes -## 6.1.1 - 2024-08-19 -* BUGFIX: Assembly resolver to pick a found SDK instead of first SDK - https://github.com/fsprojects/FAKE/pull/2797/files +## 6.1.1 - 2024-08-30 +* BUGFIX: Assembly resolver to pick a found SDK instead of first SDK, thanks @Thorium - https://github.com/fsprojects/FAKE/pull/2797/files * BUGFIX: Fix issue parsing global.json when using prerelease .NET SDKs, thanks @numpsy - https://github.com/fsprojects/FAKE/issues/2803 +* BUGFIX: Allow RunSettingsArguments to be set, thanks @TheAngryByrd - https://github.com/fsprojects/FAKE/pull/2771 ## 6.1.0 - 2024-07-27 * BUGFIX: MSBuild.build adds a bad string at the end of properties, thanks @0x53A - https://github.com/fsprojects/FAKE/issues/2738 diff --git a/src/app/Fake.DotNet.Cli/DotNet.fs b/src/app/Fake.DotNet.Cli/DotNet.fs index 62e6a2c3eb2..f9663feea5a 100644 --- a/src/app/Fake.DotNet.Cli/DotNet.fs +++ b/src/app/Fake.DotNet.Cli/DotNet.fs @@ -1170,21 +1170,33 @@ module DotNet = MSBuild.addBinaryLogger (common.DotNetCliPath + " msbuild") callMsBuildExe args disableFakeBinLog - let internal execWithBinLog project common command args msBuildArgs = + let internal buildAfterArgs args afterArgs = + [ yield! args + match afterArgs with + | Some a -> + yield "--" + yield a + | None -> () ] + + let internal execWithBinLog project common command args msBuildArgs afterArgs = let msbuildArgList = MSBuild.fromCliArguments msBuildArgs let binLogPath, args = addBinaryLogger msBuildArgs.DisableInternalBinLog (args @ msbuildArgList) common + let args = buildAfterArgs args afterArgs + let result = execArgsList (fun _ -> common) command args MSBuild.handleAfterRun (sprintf "dotnet %s" command) binLogPath result.ExitCode project - let internal tryExecWithBinLog project common command args msBuildArgs = + let internal tryExecWithBinLog project common command args msBuildArgs afterArgs = let msbuildArgList = MSBuild.fromCliArguments msBuildArgs let binLogPath, args = addBinaryLogger msBuildArgs.DisableInternalBinLog (args @ msbuildArgList) common + let args = buildAfterArgs args afterArgs + let result = execArgsList (fun _ -> common) command args try @@ -1227,7 +1239,7 @@ module DotNet = let param = MSBuildOptions.Create() |> setParams let args = [ project ] - execWithBinLog project param.Common "msbuild" args param.MSBuildParams + execWithBinLog project param.Common "msbuild" args param.MSBuildParams None __.MarkSuccess() // TODO: Make this API public? change return code? @@ -1236,7 +1248,9 @@ module DotNet = let param = MSBuildOptions.Create() |> setParams let args = [ project ] - let r = tryExecWithBinLog project param.Common "msbuild" args param.MSBuildParams + + let r = + tryExecWithBinLog project param.Common "msbuild" args param.MSBuildParams None //__.MarkSuccess() r @@ -1323,7 +1337,7 @@ module DotNet = use __ = Trace.traceTask "DotNet:restore" project let param = RestoreOptions.Create() |> setParams let args = project :: buildRestoreArgs param - execWithBinLog project param.Common "restore" args param.MSBuildParams + execWithBinLog project param.Common "restore" args param.MSBuildParams None __.MarkSuccess() /// build configuration @@ -1460,7 +1474,7 @@ module DotNet = use __ = Trace.traceTask "DotNet:pack" project let param = PackOptions.Create() |> setParams let args = project :: buildPackArgs param - execWithBinLog project param.Common "pack" args param.MSBuildParams + execWithBinLog project param.Common "pack" args param.MSBuildParams None __.MarkSuccess() /// @@ -1577,7 +1591,7 @@ module DotNet = use __ = Trace.traceTask "DotNet:publish" project let param = PublishOptions.Create() |> setParams let args = project :: buildPublishArgs param - execWithBinLog project param.Common "publish" args param.MSBuildParams + execWithBinLog project param.Common "publish" args param.MSBuildParams None __.MarkSuccess() /// @@ -1667,7 +1681,7 @@ module DotNet = use __ = Trace.traceTask "DotNet:build" project let param = BuildOptions.Create() |> setParams let args = project :: buildBuildArgs param - execWithBinLog project param.Common "build" args param.MSBuildParams + execWithBinLog project param.Common "build" args param.MSBuildParams None __.MarkSuccess() /// @@ -1818,7 +1832,7 @@ module DotNet = use __ = Trace.traceTask "DotNet:test" project let param = TestOptions.Create() |> setParams let args = project :: buildTestArgs param - execWithBinLog project param.Common "test" args param.MSBuildParams + execWithBinLog project param.Common "test" args param.MSBuildParams param.RunSettingsArguments __.MarkSuccess() let internal buildNugetPushArgs (param: NuGet.NuGetPushParams) = diff --git a/src/test/Fake.Core.UnitTests/Fake.DotNet.Cli.fs b/src/test/Fake.Core.UnitTests/Fake.DotNet.Cli.fs index 9a06719601c..0ee11e0d46f 100644 --- a/src/test/Fake.Core.UnitTests/Fake.DotNet.Cli.fs +++ b/src/test/Fake.Core.UnitTests/Fake.DotNet.Cli.fs @@ -129,4 +129,22 @@ let tests = let expected = "--uninstall my-awesome-template" - Expect.equal cli expected "New --uninstall args generated correctly." ] + Expect.equal cli expected "New --uninstall args generated correctly." + + testCase "Test buildAfterArgs with no after args" + <| fun _ -> + let expected = "hello" + let cli = DotNet.buildAfterArgs [ "hello" ] None |> Args.toWindowsCommandLine + + Expect.equal cli expected "Empty after args." + + testCase "Test buildAfterArgs with after args" + <| fun _ -> + let expected = "hello -- lol=foo" + + let cli = + DotNet.buildAfterArgs [ "hello" ] (Some "lol=foo") |> Args.toWindowsCommandLine + + Expect.equal cli expected "Empty after args." + + ]