22#load " .fake/build.fsx/intellisense.fsx"
33#endif
44
5- // F# 4.7 due to https://github.com/fsharp/FAKE/issues/2001
65#r " paket:
76nuget FSharp.Core 6.0.4
87nuget Fake.Core.Target
@@ -122,13 +121,18 @@ let projects = [
122121 if Environment.isMacOS then yield ! [ Projects.macosWkLib; Projects.macosWkFFLib]
123122]
124123
125- let msbuild setParams project =
126- let buildMode = Environment.environVarOrDefault " buildMode" " Release"
124+ let buildMode ( args : TargetParameter ) =
125+ args.Context.Arguments
126+ |> List.tryPick ( fun x -> if x.ToLower() = " debug" then Some x else None)
127+ |> Option.defaultValue " Release"
128+
129+ let msbuild args setParams project =
130+ // let buildMode = Environment.environVarOrDefault "buildMode" "Release"
127131 let commit = Git.Information.getCurrentSHA1 __ SOURCE_ DIRECTORY__
128132 project |> MSBuild.build (
129133 quiet <<
130134 setParams <<
131- addProperties [ " Configuration" , buildMode; " RepositoryCommit" , commit] <<
135+ addProperties [ " Configuration" , buildMode args ; " RepositoryCommit" , commit] <<
132136 addVersionInfo currentVersionInfo << setParams
133137 )
134138
@@ -148,7 +152,7 @@ let getNupkgPath version (projPath: string) =
148152 Path.Combine ([| projDir; " bin" ; " Release" ;
149153 sprintf " %s%s .nupkg" ( Path.GetFileNameWithoutExtension projPath) vstr|])
150154
151- Target.create " Clean" ( fun _ ->
155+ Target.create " Clean" ( fun args ->
152156 Trace.log " --- Cleaning --- "
153157 for ( proj, projStyle) in projects do
154158 let vstr = currentVersionInfo.versionName
@@ -159,7 +163,7 @@ Target.create "Clean" (fun _ ->
159163 else if Environment.isMacOS then [ yield Solutions.macos; for ( p,_) in Templates.macosProjects -> p ]
160164 else []
161165 for proj in projects do
162- msbuild ( addTarget " Clean" ) proj
166+ msbuild args ( addTarget " Clean" ) proj
163167 Shell.deleteDir " .fsdocs"
164168 Shell.deleteDir " output"
165169 Shell.deleteDir " temp"
@@ -221,21 +225,21 @@ Target.create "UpdateAssemblyInfo" (fun _ ->
221225 File.WriteAllText ( asmInfoPath, result)
222226)
223227
224- Target.create " Build" ( fun _ ->
228+ Target.create " Build" ( fun args ->
225229 Trace.log " --- Building --- "
226230 // if Environment.isWindows then
227231 // msbuild (addTarget "Restore") Solutions.windows
228232 // else
229233 // msbuild (addTarget "Restore") Solutions.macos
230234 if Environment.isWindows then
231- msbuild ( addTarget " Build" ) ( fst Projects.winFormsLib)
232- msbuild ( addTarget " Build" ) ( fst Projects.wpfLib)
235+ msbuild args ( addTarget " Build" ) ( fst Projects.winFormsLib)
236+ msbuild args ( addTarget " Build" ) ( fst Projects.wpfLib)
233237 else if Environment.isMacOS then
234238 // this is so very strange that we have to treat them differently like so...
235239 // macosWkLib needs the `msbuild /restore` for whatever reason because it's an SDK-style project...
236- msbuild ( doRestore) ( fst Projects.macosWkLib)
240+ msbuild args ( doRestore) ( fst Projects.macosWkLib)
237241 // but this one needs the `dotnet restore *.sln` somehow because it's not an SDK-style project!
238- msbuild id ( fst Projects.macosWkFFLib)
242+ msbuild args id ( fst Projects.macosWkFFLib)
239243 // this makes zero sense, but alright... seriously, what the heck? You try changing those around and see msbuild/dotnet scream
240244 // at you
241245)
@@ -263,15 +267,15 @@ Target.create "ReleaseDocs" (fun _ ->
263267 Git.Branches.pushBranch " temp/gh-pages" " origin" " gh-pages"
264268)
265269
266- Target.create " Pack" ( fun _ ->
270+ Target.create " Pack" ( fun args ->
267271 Trace.log " --- Packing NuGet packages --- "
268272 let props = [ " SolutionDir" , __ SOURCE_ DIRECTORY__]
269273 Trace.log ( sprintf " PROJECT LIST: %A " projects)
270274 for ( proj, projStyle) in projects do
271275 match projStyle with
272276 | ProjectStyle.Sdk ->
273277 Trace.log ( sprintf " Packing %s (sdk-style project)" proj)
274- msbuild ( addTargets [ " Pack" ] << addProperties props) proj
278+ msbuild args ( addTargets [ " Pack" ] << addProperties props) proj
275279 // Collect all generated package archives into a common folder
276280 let vstr = currentVersionInfo.versionName
277281 let oldNupkgPath = getNupkgPath ( Some vstr) proj
@@ -299,7 +303,7 @@ Target.create "Pack" (fun _ ->
299303 |> Seq.iter ( `` Nupkg-hack `` .hackNupkgAtPath)
300304)
301305
302- Target.create " BuildTemplateProjects" ( fun _ ->
306+ Target.create " BuildTemplateProjects" ( fun args ->
303307 Trace.log " --- Building template projects --- "
304308 if Environment.isWindows then
305309 let p = [ yield ! Templates.winProjects ]
@@ -310,10 +314,10 @@ Target.create "BuildTemplateProjects" (fun _ ->
310314 else if Environment.isMacOS then
311315 let p = [ yield ! Templates.macosProjects ]
312316 for ( proj, projStyle) in p do
313- msbuild ( addTarget " Restore" ) proj
317+ msbuild args ( addTarget " Restore" ) proj
314318 // DotNet.restore id proj
315319 for ( proj, projStyle) in p do
316- msbuild ( addTarget " Build" ) proj
320+ msbuild args ( addTarget " Build" ) proj
317321)
318322
319323Target.create " PackTemplates" ( fun _ ->
@@ -367,4 +371,4 @@ open Fake.Core.TargetOperators
367371 ==> " BuildTemplateProjects"
368372
369373// *** Start Build ***
370- Target.runOrDefault " Build"
374+ Target.runOrDefaultWithArguments " Build"
0 commit comments