51 lines
1.3 KiB
Forth
51 lines
1.3 KiB
Forth
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"
|
|
]
|
|
|
|
[<EntryPoint>]
|
|
let main args =
|
|
try
|
|
match args with
|
|
| [| target |] -> Target.runOrDefault target
|
|
| _ -> Target.runOrDefault "All"
|
|
0
|
|
with e ->
|
|
printfn "%A" e
|
|
1
|