-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathbuild.fsx
More file actions
60 lines (46 loc) · 1.52 KB
/
build.fsx
File metadata and controls
60 lines (46 loc) · 1.52 KB
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
// xake build file
#r "nuget: Xake, 2.3.0"
open Xake
open Xake.Tasks
let (=?) value deflt = value |> Option.defaultValue deflt
let getVersion () = recipe {
let! ver = getEnv "VERSION"
return ver =? "0.0.1"
}
do xake {ExecOptions.Default with FileLog = "build.log"; ConLogLevel = Loud } {
rules [
"main" <== ["build"; "test"; "pack"]
"clean" => recipe {
do! rm { dir "Src/**/bin" }
do! rm { dir "Src/**/obj" }
}
"build" ..> recipe {
do! dependsOn !! "Src/Core/**/*.cs"
let! ver = getVersion()
do! sh $"dotnet build -c Release -p:Version={ver}" { workdir "Src/Core" }
}
"test" ..> recipe {
do! dependsOn !! "Src/Core.Tests/**/*.cs"
do! sh "dotnet test" { workdir "Src/Core.Tests" }
}
"pack" ..> recipe {
let! ver = getVersion()
do! sh $"dotnet pack -c Release -p:Version={ver}" { workdir "Src/Core" }
}
"push" => action {
do! need ["pack"]
let! ver = getVersion()
let! nuget_key_var = getEnv "NUGET_KEY"
let package_name = $"NEbml.{ver}.nupkg"
let nuget_key = nuget_key_var =? ""
do! sh "dotnet nuget push" {
workdir "Src/Core/bin/Release"
args [
package_name
"--api-key"; nuget_key
"--source"; "https://api.nuget.org/v3/index.json"
]
}
}
]
}