open Fake.Core open Fake.DotNet open Fake.IO open Fake.IO.Globbing.Operators let execContext = Context.FakeExecutionContext.Create false "build.fsx" [] Context.setExecutionContext (Context.RuntimeContext.Fake execContext) /// The root path to the projects within this solution let projPath = "src/PrayerTracker" Target.create "Clean" (fun _ -> !! "src/**/bin" ++ "src/**/obj" |> Shell.cleanDirs ) Target.create "Test" (fun _ -> let testPath = $"{projPath}.Tests" DotNet.build (fun opts -> { opts with NoLogo = true }) $"{testPath}/PrayerTracker.Tests.fsproj" Testing.Expecto.run (fun opts -> { opts with WorkingDirectory = $"{testPath}/bin/Release/net9.0" }) [ "PrayerTracker.Tests.dll" ]) Target.create "Publish" (fun _ -> DotNet.publish (fun opts -> { opts with Runtime = Some "linux-x64"; SelfContained = Some false; NoLogo = true }) $"{projPath}/PrayerTracker.fsproj") Target.create "All" ignore open Fake.Core.TargetOperators let dependencies = [ "Clean" ==> "Test" ==> "Publish" ==> "All" ] [] let main args = try match args with | [| target |] -> Target.runOrDefault target | _ -> Target.runOrDefault "All" 0 with e -> printfn "%A" e 1