1111#r " nuget: System.Reactive"
1212#r " nuget: Octokit"
1313
14- open System
1514open System.IO
16- open System.Collections .Generic
17- open System.Threading
1815open Fake
19- open Fake.Tools .Git
2016open Fake.DotNet
2117open Fake.DotNet .NuGet
2218open Fake.IO
@@ -25,8 +21,6 @@ open Fake.IO.Globbing.Operators
2521open Fake.Core .TargetOperators
2622open Fake.Tools
2723open Fake.Core
28- open Fake.Api
29- open Octokit
3024
3125// https://github.com/fsprojects/FAKE/issues/2517
3226// Regular header and `#load ".fake/build.fsx/intellisense.fsx"`
@@ -50,28 +44,33 @@ execContext
5044// - to run tests and to publish documentation on GitHub gh-pages
5145// - for documentation, you also need to edit info in "docs/tools/generate.fsx"
5246
53- let [<Literal>] DotNetMoniker = " net6.0"
47+ [<Literal>]
48+ let DotNetMoniker = " net6.0"
49+
5450let project = " FSharp.Data.GraphQL"
5551let release = ReleaseNotes.load " RELEASE_NOTES.md"
5652let projectRepo = " https://github.com/fsprojects/FSharp.Data.GraphQL.git"
5753
5854// --------------------------------------------------------------------------------------
5955// Clean build results
6056
61- Target.create " Clean" <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
57+ Target.create " Clean"
58+ <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
6259
63- Target.create " CleanDocs" <| fun _ -> Shell.cleanDirs [ " docs/output" ]
60+ Target.create " CleanDocs"
61+ <| fun _ -> Shell.cleanDirs [ " docs/output" ]
6462
6563// --------------------------------------------------------------------------------------
6664// Build library & test project
6765
68- Target.create " Restore" <| fun _ ->
69- !! " src/**/*.??proj "
70- -- " src/**/*.shproj"
66+ Target.create " Restore"
67+ <| fun _ ->
68+ !! " src/**/*.??proj " -- " src/**/*.shproj"
7169 |> Seq.iter ( fun pattern -> DotNet.restore id pattern)
7270
7371
74- Target.create " Build" <| fun _ ->
72+ Target.create " Build"
73+ <| fun _ ->
7574 " FSharp.Data.GraphQL.sln"
7675 |> DotNet.build ( fun o ->
7776 { o with
@@ -88,10 +87,18 @@ let startGraphQLServer (project : string) (streamRef : DataRef<Stream>) =
8887
8988 let projectName = Path.GetFileNameWithoutExtension ( project)
9089 let projectPath = Path.GetDirectoryName ( project)
91- let serverExe = projectPath </> " bin" </> " Release" </> DotNetMoniker </> ( projectName + " .dll" )
90+
91+ let serverExe =
92+ projectPath
93+ </> " bin"
94+ </> " Release"
95+ </> DotNetMoniker
96+ </> ( projectName + " .dll" )
9297
9398 CreateProcess.fromRawCommandLine " dotnet" serverExe
94- |> CreateProcess.withStandardInput ( CreatePipe streamRef) |> Proc.start |> ignore
99+ |> CreateProcess.withStandardInput ( CreatePipe streamRef)
100+ |> Proc.start
101+ |> ignore
95102
96103 System.Threading.Thread.Sleep ( 2000 )
97104
@@ -113,30 +120,50 @@ let runTests (project : string) =
113120
114121let starWarsServerStream = StreamRef.Empty
115122
116- Target.create " StartStarWarsServer" <| fun _ ->
123+ Target.create " StartStarWarsServer"
124+ <| fun _ ->
117125 Target.activateFinal " StopStarWarsServer"
118- let project = " samples" </> " star-wars-api" </> " FSharp.Data.GraphQL.Samples.StarWarsApi.fsproj"
126+
127+ let project =
128+ " samples"
129+ </> " star-wars-api"
130+ </> " FSharp.Data.GraphQL.Samples.StarWarsApi.fsproj"
131+
119132 startGraphQLServer project starWarsServerStream
120133
121- Target.createFinal " StopStarWarsServer" <| fun _ ->
122- try starWarsServerStream.Value.Write ([| 0 uy |], 0 , 1 )
123- with e -> printfn " %s " e.Message
134+ Target.createFinal " StopStarWarsServer"
135+ <| fun _ ->
136+ try
137+ starWarsServerStream.Value.Write ([| 0 uy |], 0 , 1 )
138+ with e ->
139+ printfn " %s " e.Message
124140
125141
126142let integrationServerStream = StreamRef.Empty
127143
128- Target.create " StartIntegrationServer" <| fun _ ->
144+ Target.create " StartIntegrationServer"
145+ <| fun _ ->
129146 Target.activateFinal " StopIntegrationServer"
130- let project = " tests" </> " FSharp.Data.GraphQL.IntegrationTests.Server" </> " FSharp.Data.GraphQL.IntegrationTests.Server.fsproj"
147+
148+ let project =
149+ " tests"
150+ </> " FSharp.Data.GraphQL.IntegrationTests.Server"
151+ </> " FSharp.Data.GraphQL.IntegrationTests.Server.fsproj"
152+
131153 startGraphQLServer project integrationServerStream
132154
133- Target.createFinal " StopIntegrationServer" <| fun _ ->
134- try integrationServerStream.Value.Write ([| 0 uy |], 0 , 1 )
135- with e -> printfn " %s " e.Message
155+ Target.createFinal " StopIntegrationServer"
156+ <| fun _ ->
157+ try
158+ integrationServerStream.Value.Write ([| 0 uy |], 0 , 1 )
159+ with e ->
160+ printfn " %s " e.Message
136161
137- Target.create " RunUnitTests" <| fun _ -> runTests " tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj"
162+ Target.create " RunUnitTests"
163+ <| fun _ -> runTests " tests/FSharp.Data.GraphQL.Tests/FSharp.Data.GraphQL.Tests.fsproj"
138164
139- Target.create " RunIntegrationTests" <| fun _ -> runTests " tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
165+ Target.create " RunIntegrationTests"
166+ <| fun _ -> runTests " tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
140167
141168let prepareDocGen () =
142169 Shell.rm " docs/release-notes.md"
@@ -149,51 +176,82 @@ let prepareDocGen () =
149176
150177 Shell.cleanDir " .fsdocs"
151178
152- Target.create " GenerateDocs" <| fun _ ->
179+ Target.create " GenerateDocs"
180+ <| fun _ ->
153181 prepareDocGen ()
154182 DotNet.exec id " fsdocs" " build --clean" |> ignore
155183
156- Target.create " GenerateDocsWatch" <| fun _ ->
184+ Target.create " GenerateDocsWatch"
185+ <| fun _ ->
157186 prepareDocGen ()
158187 DotNet.exec id " fsdocs" " watch --clean" |> ignore
159188 System.Console.ReadKey () |> ignore
160189
161- Target.create " ReleaseDocs" <| fun _ ->
190+ Target.create " ReleaseDocs"
191+ <| fun _ ->
162192 Git.Repository.clone " " projectRepo " temp/gh-pages"
163193 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 "
194+
195+ Shell.copyRecursive " output" " temp/gh-pages" true
196+ |> printfn " %A "
197+
198+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" " add ."
199+ |> printfn " %s "
166200
167201 let cmd = sprintf """ commit -a -m "Update generated documentation for version %s """ release.NugetVersion
168- Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" cmd |> printfn " %s "
202+
203+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" cmd
204+ |> printfn " %s "
205+
169206 Git.Branches.push " temp/gh-pages"
170207
208+ let getPackageName id = sprintf " %s .%s " project id
209+
210+ let getPackageDir packageName = sprintf " nuget/%s " packageName
211+
212+ let getProjectPath packageName = sprintf " src/%s /%s .fsproj" packageName packageName
213+
171214let pack id =
172- Shell.cleanDir <| sprintf " nuget/%s .%s " project id
173- id |> NuGet.NuGetPack ( fun p ->
215+ let packageName = getPackageName id
216+ let packageDir = getPackageDir packageName
217+ let projectPath = getProjectPath packageName
218+
219+ Shell.cleanDir packageDir
220+
221+ projectPath
222+ |> DotNet.pack ( fun p ->
174223 { p with
175- Version = release.NugetVersion
176- OutputPath = sprintf " nuget/%s .%s " project id
177- //IncludeReferencedProjects = false
178- })
224+ Common = { p.Common with Version = Some release.NugetVersion }
225+ OutputPath = Some packageDir })
179226
180227let publishPackage id =
181- pack id
182- NuGet.NuGetPublish <| fun p -> { p with WorkingDir = sprintf " nuget/%s .%s " project id }
228+ let packageName = getPackageName id
229+ let packageDir = getPackageDir packageName
230+ let projectPath = getProjectPath packageName
231+
232+ projectPath
233+ |> DotNet.publish ( fun p -> { p with Common = { p.Common with WorkingDirectory = packageDir } })
234+
235+ Target.create " PublishServer"
236+ <| fun _ -> publishPackage " Server"
183237
184- Target.create " PublishServer" <| fun _ -> publishPackage " Server"
238+ Target.create " PublishClient"
239+ <| fun _ -> publishPackage " Client"
185240
186- Target.create " PublishClient" <| fun _ -> publishPackage " Client"
241+ Target.create " PublishMiddleware"
242+ <| fun _ -> publishPackage " Server.Middleware"
187243
188- Target.create " PublishMiddleware" <| fun _ -> publishPackage " Server.Middleware"
244+ Target.create " PublishShared"
245+ <| fun _ -> publishPackage " Shared"
189246
190- Target.create " PackShared " <| fun _ -> pack " Shared "
247+ Target.create " PackServer " <| fun _ -> pack " Server "
191248
192- Target.create " PackServer " <| fun _ -> pack " Server "
249+ Target.create " PackClient " <| fun _ -> pack " Client "
193250
194- Target.create " PackClient" <| fun _ -> pack " Client"
251+ Target.create " PackMiddleware"
252+ <| fun _ -> pack " Server.Middleware"
195253
196- Target.create " PackMiddleware " <| fun _ -> pack " Server.Middleware "
254+ Target.create " PackShared " <| fun _ -> pack " Shared "
197255
198256
199257// --------------------------------------------------------------------------------------
@@ -203,22 +261,22 @@ Target.create "All" ignore
203261Target.create " PackAll" ignore
204262
205263" Clean"
206- ==> " Restore"
207- ==> " Build"
208- ==> " RunUnitTests"
209- ==> " StartStarWarsServer"
210- ==> " StartIntegrationServer"
211- ==> " RunIntegrationTests"
212- ==> " All"
213- =?> ( " GenerateDocs" , Environment.environVar " APPVEYOR" = " True" )
264+ ==> " Restore"
265+ ==> " Build"
266+ ==> " RunUnitTests"
267+ ==> " StartStarWarsServer"
268+ ==> " StartIntegrationServer"
269+ ==> " RunIntegrationTests"
270+ ==> " All"
271+ =?> ( " GenerateDocs" , Environment.environVar " APPVEYOR" = " True" )
214272
215273" CleanDocs" ==> " GenerateDocs"
216274
217275" PackShared"
218- ==> " PackServer"
219- ==> " PackClient"
220- ==> " PackMiddleware"
221- ==> " PackAll"
276+ ==> " PackServer"
277+ ==> " PackClient"
278+ ==> " PackMiddleware"
279+ ==> " PackAll"
222280
223281Target.runOrDefaultWithArguments " All"
224282
0 commit comments