Skip to content

Commit bb0dce7

Browse files
authored
Allow RunSettingsArguments to be set (#2771)
1 parent 3e5e3f0 commit bb0dce7

File tree

3 files changed

+45
-12
lines changed

3 files changed

+45
-12
lines changed

RELEASE_NOTES.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Release Notes
22

3-
## 6.1.1 - 2024-08-19
4-
* BUGFIX: Assembly resolver to pick a found SDK instead of first SDK - https://github.com/fsprojects/FAKE/pull/2797/files
3+
## 6.1.1 - 2024-08-30
4+
* BUGFIX: Assembly resolver to pick a found SDK instead of first SDK, thanks @Thorium - https://github.com/fsprojects/FAKE/pull/2797/files
55
* BUGFIX: Fix issue parsing global.json when using prerelease .NET SDKs, thanks @numpsy - https://github.com/fsprojects/FAKE/issues/2803
6+
* BUGFIX: Allow RunSettingsArguments to be set, thanks @TheAngryByrd - https://github.com/fsprojects/FAKE/pull/2771
67

78
## 6.1.0 - 2024-07-27
89
* BUGFIX: MSBuild.build adds a bad string at the end of properties, thanks @0x53A - https://github.com/fsprojects/FAKE/issues/2738

src/app/Fake.DotNet.Cli/DotNet.fs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1170,21 +1170,33 @@ module DotNet =
11701170

11711171
MSBuild.addBinaryLogger (common.DotNetCliPath + " msbuild") callMsBuildExe args disableFakeBinLog
11721172

1173-
let internal execWithBinLog project common command args msBuildArgs =
1173+
let internal buildAfterArgs args afterArgs =
1174+
[ yield! args
1175+
match afterArgs with
1176+
| Some a ->
1177+
yield "--"
1178+
yield a
1179+
| None -> () ]
1180+
1181+
let internal execWithBinLog project common command args msBuildArgs afterArgs =
11741182
let msbuildArgList = MSBuild.fromCliArguments msBuildArgs
11751183

11761184
let binLogPath, args =
11771185
addBinaryLogger msBuildArgs.DisableInternalBinLog (args @ msbuildArgList) common
11781186

1187+
let args = buildAfterArgs args afterArgs
1188+
11791189
let result = execArgsList (fun _ -> common) command args
11801190
MSBuild.handleAfterRun (sprintf "dotnet %s" command) binLogPath result.ExitCode project
11811191

1182-
let internal tryExecWithBinLog project common command args msBuildArgs =
1192+
let internal tryExecWithBinLog project common command args msBuildArgs afterArgs =
11831193
let msbuildArgList = MSBuild.fromCliArguments msBuildArgs
11841194

11851195
let binLogPath, args =
11861196
addBinaryLogger msBuildArgs.DisableInternalBinLog (args @ msbuildArgList) common
11871197

1198+
let args = buildAfterArgs args afterArgs
1199+
11881200
let result = execArgsList (fun _ -> common) command args
11891201

11901202
try
@@ -1227,7 +1239,7 @@ module DotNet =
12271239

12281240
let param = MSBuildOptions.Create() |> setParams
12291241
let args = [ project ]
1230-
execWithBinLog project param.Common "msbuild" args param.MSBuildParams
1242+
execWithBinLog project param.Common "msbuild" args param.MSBuildParams None
12311243
__.MarkSuccess()
12321244

12331245
// TODO: Make this API public? change return code?
@@ -1236,7 +1248,9 @@ module DotNet =
12361248

12371249
let param = MSBuildOptions.Create() |> setParams
12381250
let args = [ project ]
1239-
let r = tryExecWithBinLog project param.Common "msbuild" args param.MSBuildParams
1251+
1252+
let r =
1253+
tryExecWithBinLog project param.Common "msbuild" args param.MSBuildParams None
12401254
//__.MarkSuccess()
12411255
r
12421256

@@ -1323,7 +1337,7 @@ module DotNet =
13231337
use __ = Trace.traceTask "DotNet:restore" project
13241338
let param = RestoreOptions.Create() |> setParams
13251339
let args = project :: buildRestoreArgs param
1326-
execWithBinLog project param.Common "restore" args param.MSBuildParams
1340+
execWithBinLog project param.Common "restore" args param.MSBuildParams None
13271341
__.MarkSuccess()
13281342

13291343
/// build configuration
@@ -1460,7 +1474,7 @@ module DotNet =
14601474
use __ = Trace.traceTask "DotNet:pack" project
14611475
let param = PackOptions.Create() |> setParams
14621476
let args = project :: buildPackArgs param
1463-
execWithBinLog project param.Common "pack" args param.MSBuildParams
1477+
execWithBinLog project param.Common "pack" args param.MSBuildParams None
14641478
__.MarkSuccess()
14651479

14661480
/// <summary>
@@ -1577,7 +1591,7 @@ module DotNet =
15771591
use __ = Trace.traceTask "DotNet:publish" project
15781592
let param = PublishOptions.Create() |> setParams
15791593
let args = project :: buildPublishArgs param
1580-
execWithBinLog project param.Common "publish" args param.MSBuildParams
1594+
execWithBinLog project param.Common "publish" args param.MSBuildParams None
15811595
__.MarkSuccess()
15821596

15831597
/// <summary>
@@ -1667,7 +1681,7 @@ module DotNet =
16671681
use __ = Trace.traceTask "DotNet:build" project
16681682
let param = BuildOptions.Create() |> setParams
16691683
let args = project :: buildBuildArgs param
1670-
execWithBinLog project param.Common "build" args param.MSBuildParams
1684+
execWithBinLog project param.Common "build" args param.MSBuildParams None
16711685
__.MarkSuccess()
16721686

16731687
/// <summary>
@@ -1818,7 +1832,7 @@ module DotNet =
18181832
use __ = Trace.traceTask "DotNet:test" project
18191833
let param = TestOptions.Create() |> setParams
18201834
let args = project :: buildTestArgs param
1821-
execWithBinLog project param.Common "test" args param.MSBuildParams
1835+
execWithBinLog project param.Common "test" args param.MSBuildParams param.RunSettingsArguments
18221836
__.MarkSuccess()
18231837

18241838
let internal buildNugetPushArgs (param: NuGet.NuGetPushParams) =

src/test/Fake.Core.UnitTests/Fake.DotNet.Cli.fs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,22 @@ let tests =
129129

130130
let expected = "--uninstall my-awesome-template"
131131

132-
Expect.equal cli expected "New --uninstall args generated correctly." ]
132+
Expect.equal cli expected "New --uninstall args generated correctly."
133+
134+
testCase "Test buildAfterArgs with no after args"
135+
<| fun _ ->
136+
let expected = "hello"
137+
let cli = DotNet.buildAfterArgs [ "hello" ] None |> Args.toWindowsCommandLine
138+
139+
Expect.equal cli expected "Empty after args."
140+
141+
testCase "Test buildAfterArgs with after args"
142+
<| fun _ ->
143+
let expected = "hello -- lol=foo"
144+
145+
let cli =
146+
DotNet.buildAfterArgs [ "hello" ] (Some "lol=foo") |> Args.toWindowsCommandLine
147+
148+
Expect.equal cli expected "Empty after args."
149+
150+
]

0 commit comments

Comments
 (0)