-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.fs
101 lines (81 loc) · 2.78 KB
/
run.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
open System
open System.IO
open System.Runtime.InteropServices
open Fake.IO
open RunHelpers
open RunHelpers.Templates
[<RequireQualifiedAccess>]
module Config =
let dataFolder = "./data"
let mainProject =
"./src/MagicCollectionHelper/AvaloniaApp/MagicCollectionHelper.AvaloniaApp.fsproj"
let testFolder = "./tests"
let packPath = "./deploy"
module Task =
let restore () =
DotNet.restoreWithTools Config.mainProject
let build () = DotNet.build Config.mainProject Debug
let run () = DotNet.run Config.mainProject
let test () =
let projects =
Directory.EnumerateFiles(Config.testFolder, "*.fsproj", SearchOption.AllDirectories)
job {
for project in projects do
printfn "\nRun tests in %s:" project
DotNet.run project
}
let setupTestdata () =
if not (RuntimeInformation.IsOSPlatform OSPlatform.Linux) then
Job.error [ "Setup-testdata is only supported on linux!" ]
else
// Move workspace files
Path.Combine(Config.dataFolder, "workspace")
|> Directory.EnumerateFiles
|> Shell.copy "."
// Move share files
Path.Combine(Config.dataFolder, "share")
|> Directory.EnumerateFiles
|> Shell.copy (
Path.Combine(Environment.GetEnvironmentVariable("HOME"), ".local", "share", "magic-collection-helper")
)
Job.ok
let publish () =
Shell.rm Config.packPath
Shell.mkdir Config.packPath
job {
DotNet.publishSelfContained Config.packPath Config.mainProject LinuxX64
Shell.mv
$"{Config.packPath}/MagicCollectionHelper.AvaloniaApp"
$"{Config.packPath}/MagicCollectionHelper-linux-x64"
// Windows
DotNet.publishSelfContained Config.packPath Config.mainProject WindowsX64
Shell.mv
$"{Config.packPath}/MagicCollectionHelper.AvaloniaApp.exe"
$"{Config.packPath}/MagicCollectionHelper-win-x64.exe"
}
[<EntryPoint>]
let main args =
args
|> List.ofArray
|> function
| [ "restore" ] -> Task.restore ()
| [ "build" ] -> job {
Task.restore ()
Task.build ()
}
| []
| [ "run" ] -> job {
Task.restore ()
Task.run ()
}
| [ "test" ] -> job {
Task.restore ()
Task.test ()
}
| [ "publish" ] -> job {
Task.restore ()
Task.publish ()
}
| [ "setup-testdata" ] -> Task.setupTestdata ()
| _ -> Job.error [ "Usage: dotnet run [<command>]"; "Look up available commands in run.fs" ]
|> Job.execute