11
11
#r " nuget: System.Reactive"
12
12
#r " nuget: Octokit"
13
13
14
- open System
15
14
open System.IO
16
- open System.Collections .Generic
17
- open System.Threading
18
15
open Fake
19
- open Fake.Tools .Git
20
16
open Fake.DotNet
21
- open Fake.DotNet .NuGet
22
17
open Fake.IO
23
18
open Fake.IO .FileSystemOperators
24
19
open Fake.IO .Globbing .Operators
25
20
open Fake.Core .TargetOperators
26
21
open Fake.Tools
27
22
open Fake.Core
28
- open Fake.Api
29
- open Octokit
30
23
31
24
// https://github.com/fsprojects/FAKE/issues/2517
32
25
// Regular header and `#load ".fake/build.fsx/intellisense.fsx"`
@@ -50,28 +43,29 @@ execContext
50
43
// - to run tests and to publish documentation on GitHub gh-pages
51
44
// - for documentation, you also need to edit info in "docs/tools/generate.fsx"
52
45
53
- let [<Literal>] DotNetMoniker = " net6.0"
46
+ [<Literal>]
47
+ let DotNetMoniker = " net6.0"
48
+
54
49
let project = " FSharp.Data.GraphQL"
55
50
let release = ReleaseNotes.load " RELEASE_NOTES.md"
56
51
let projectRepo = " https://github.com/fsprojects/FSharp.Data.GraphQL.git"
57
52
58
53
// --------------------------------------------------------------------------------------
59
54
// Clean build results
60
55
61
- Target.create " Clean" <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
56
+ Target.create " Clean" <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
62
57
63
58
Target.create " CleanDocs" <| fun _ -> Shell.cleanDirs [ " docs/output" ]
64
59
65
60
// --------------------------------------------------------------------------------------
66
61
// Build library & test project
67
62
68
- Target.create " Restore" <| fun _ ->
69
- !! " src/**/*.??proj"
70
- -- " src/**/*.shproj"
63
+ Target.create " Restore" <| fun _ ->
64
+ !! " src/**/*.??proj" -- " src/**/*.shproj"
71
65
|> Seq.iter ( fun pattern -> DotNet.restore id pattern)
72
66
73
67
74
- Target.create " Build" <| fun _ ->
68
+ Target.create " Build" <| fun _ ->
75
69
" FSharp.Data.GraphQL.sln"
76
70
|> DotNet.build ( fun o ->
77
71
{ o with
@@ -88,10 +82,18 @@ let startGraphQLServer (project : string) (streamRef : DataRef<Stream>) =
88
82
89
83
let projectName = Path.GetFileNameWithoutExtension ( project)
90
84
let projectPath = Path.GetDirectoryName ( project)
91
- let serverExe = projectPath </> " bin" </> " Release" </> DotNetMoniker </> ( projectName + " .dll" )
85
+
86
+ let serverExe =
87
+ projectPath
88
+ </> " bin"
89
+ </> " Release"
90
+ </> DotNetMoniker
91
+ </> ( projectName + " .dll" )
92
92
93
93
CreateProcess.fromRawCommandLine " dotnet" serverExe
94
- |> CreateProcess.withStandardInput ( CreatePipe streamRef) |> Proc.start |> ignore
94
+ |> CreateProcess.withStandardInput ( CreatePipe streamRef)
95
+ |> Proc.start
96
+ |> ignore
95
97
96
98
System.Threading.Thread.Sleep ( 2000 )
97
99
@@ -115,28 +117,43 @@ let starWarsServerStream = StreamRef.Empty
115
117
116
118
Target.create " StartStarWarsServer" <| fun _ ->
117
119
Target.activateFinal " StopStarWarsServer"
118
- let project = " samples" </> " star-wars-api" </> " FSharp.Data.GraphQL.Samples.StarWarsApi.fsproj"
120
+
121
+ let project =
122
+ " samples"
123
+ </> " star-wars-api"
124
+ </> " FSharp.Data.GraphQL.Samples.StarWarsApi.fsproj"
125
+
119
126
startGraphQLServer project starWarsServerStream
120
127
121
128
Target.createFinal " StopStarWarsServer" <| fun _ ->
122
- try starWarsServerStream.Value.Write ([| 0 uy |], 0 , 1 )
123
- with e -> printfn " %s " e.Message
124
-
129
+ try
130
+ starWarsServerStream.Value.Write ([| 0 uy |], 0 , 1 )
131
+ with e ->
132
+ printfn " %s " e.Message
125
133
126
134
let integrationServerStream = StreamRef.Empty
127
135
128
136
Target.create " StartIntegrationServer" <| fun _ ->
129
137
Target.activateFinal " StopIntegrationServer"
130
- let project = " tests" </> " FSharp.Data.GraphQL.IntegrationTests.Server" </> " FSharp.Data.GraphQL.IntegrationTests.Server.fsproj"
138
+
139
+ let project =
140
+ " tests"
141
+ </> " FSharp.Data.GraphQL.IntegrationTests.Server"
142
+ </> " FSharp.Data.GraphQL.IntegrationTests.Server.fsproj"
143
+
131
144
startGraphQLServer project integrationServerStream
132
145
133
146
Target.createFinal " StopIntegrationServer" <| fun _ ->
134
- try integrationServerStream.Value.Write ([| 0 uy |], 0 , 1 )
135
- with e -> printfn " %s " e.Message
147
+ try
148
+ integrationServerStream.Value.Write ([| 0 uy |], 0 , 1 )
149
+ with e ->
150
+ printfn " %s " e.Message
136
151
137
- Target.create " RunUnitTests" <| fun _ -> runTests " tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj"
152
+ Target.create " RunUnitTests" <| fun _ ->
153
+ runTests " tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj"
138
154
139
- Target.create " RunIntegrationTests" <| fun _ -> runTests " tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
155
+ Target.create " RunIntegrationTests" <| fun _ ->
156
+ runTests " tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
140
157
141
158
let prepareDocGen () =
142
159
Shell.rm " docs/release-notes.md"
@@ -149,7 +166,7 @@ let prepareDocGen () =
149
166
150
167
Shell.cleanDir " .fsdocs"
151
168
152
- Target.create " GenerateDocs" <| fun _ ->
169
+ Target.create " GenerateDocs" <| fun _ ->
153
170
prepareDocGen ()
154
171
DotNet.exec id " fsdocs" " build --clean" |> ignore
155
172
@@ -158,42 +175,66 @@ Target.create "GenerateDocsWatch" <| fun _ ->
158
175
DotNet.exec id " fsdocs" " watch --clean" |> ignore
159
176
System.Console.ReadKey () |> ignore
160
177
161
- Target.create " ReleaseDocs" <| fun _ ->
178
+ Target.create " ReleaseDocs" <| fun _ ->
162
179
Git.Repository.clone " " projectRepo " temp/gh-pages"
163
180
Git.Branches.checkoutBranch " temp/gh-pages" " gh-pages"
164
- Shell.copyRecursive " output" " temp/gh-pages" true |> printfn " %A "
165
- Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" " add ." |> printfn " %s "
181
+
182
+ Shell.copyRecursive " output" " temp/gh-pages" true
183
+ |> printfn " %A "
184
+
185
+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" " add ."
186
+ |> printfn " %s "
166
187
167
188
let cmd = sprintf """ commit -a -m "Update generated documentation for version %s """ release.NugetVersion
168
- Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" cmd |> printfn " %s "
189
+
190
+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" cmd
191
+ |> printfn " %s "
192
+
169
193
Git.Branches.push " temp/gh-pages"
170
194
195
+ let getPackageName id = sprintf " %s .%s " project id
196
+
197
+ let getPackageDir packageName = sprintf " nuget/%s " packageName
198
+
199
+ let getProjectPath packageName = sprintf " src/%s /%s .fsproj" packageName packageName
200
+
171
201
let pack id =
172
- Shell.cleanDir <| sprintf " nuget/%s .%s " project id
173
- id |> NuGet.NuGetPack ( fun p ->
202
+ let packageName = getPackageName id
203
+ let packageDir = getPackageDir packageName
204
+ let projectPath = getProjectPath packageName
205
+
206
+ Shell.cleanDir packageDir
207
+
208
+ projectPath
209
+ |> DotNet.pack ( fun p ->
174
210
{ p with
175
- Version = release.NugetVersion
176
- OutputPath = sprintf " nuget/%s .%s " project id
177
- //IncludeReferencedProjects = false
178
- })
211
+ Common = { p.Common with Version = Some release.NugetVersion }
212
+ OutputPath = Some packageDir })
179
213
180
214
let publishPackage id =
181
- pack id
182
- NuGet.NuGetPublish <| fun p -> { p with WorkingDir = sprintf " nuget/%s .%s " project id }
215
+ let packageName = getPackageName id
216
+ let packageDir = getPackageDir packageName
217
+ let projectPath = getProjectPath packageName
183
218
184
- Target.create " PublishServer" <| fun _ -> publishPackage " Server"
219
+ projectPath
220
+ |> DotNet.publish ( fun p ->
221
+ { p with Common = { p.Common with WorkingDirectory = packageDir } })
185
222
186
- Target.create " PublishClient" <| fun _ -> publishPackage " Client"
223
+ Target.create " PublishServer" <| fun _ -> publishPackage " Server"
224
+
225
+ Target.create " PublishClient" <| fun _ -> publishPackage " Client"
187
226
188
227
Target.create " PublishMiddleware" <| fun _ -> publishPackage " Server.Middleware"
189
228
190
- Target.create " PackShared" <| fun _ -> pack " Shared"
229
+ Target.create " PublishShared" <| fun _ -> publishPackage " Shared"
230
+
231
+ Target.create " PackServer" <| fun _ -> pack " Server"
191
232
192
- Target.create " PackServer " <| fun _ -> pack " Server "
233
+ Target.create " PackClient " <| fun _ -> pack " Client "
193
234
194
- Target.create " PackClient " <| fun _ -> pack " Client "
235
+ Target.create " PackMiddleware " <| fun _ -> pack " Server.Middleware "
195
236
196
- Target.create " PackMiddleware " <| fun _ -> pack " Server.Middleware "
237
+ Target.create " PackShared " <| fun _ -> pack " Shared "
197
238
198
239
199
240
// --------------------------------------------------------------------------------------
@@ -212,7 +253,8 @@ Target.create "PackAll" ignore
212
253
==> " All"
213
254
=?> ( " GenerateDocs" , Environment.environVar " APPVEYOR" = " True" )
214
255
215
- " CleanDocs" ==> " GenerateDocs"
256
+ " CleanDocs"
257
+ ==> " GenerateDocs"
216
258
217
259
" PackShared"
218
260
==> " PackServer"
0 commit comments