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
21- open Fake.DotNet .NuGet
2217open Fake.IO
2318open Fake.IO .FileSystemOperators
2419open Fake.IO .Globbing .Operators
2520open Fake.Core .TargetOperators
2621open Fake.Tools
2722open Fake.Core
28- open Fake.Api
29- open Octokit
3023
3124// https://github.com/fsprojects/FAKE/issues/2517
3225// Regular header and `#load ".fake/build.fsx/intellisense.fsx"`
@@ -50,28 +43,29 @@ execContext
5043// - to run tests and to publish documentation on GitHub gh-pages
5144// - for documentation, you also need to edit info in "docs/tools/generate.fsx"
5245
53- let [<Literal>] DotNetMoniker = " net6.0"
46+ [<Literal>]
47+ let DotNetMoniker = " net6.0"
48+
5449let project = " FSharp.Data.GraphQL"
5550let release = ReleaseNotes.load " RELEASE_NOTES.md"
5651let projectRepo = " https://github.com/fsprojects/FSharp.Data.GraphQL.git"
5752
5853// --------------------------------------------------------------------------------------
5954// Clean build results
6055
61- Target.create " Clean" <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
56+ Target.create " Clean" <| fun _ -> Shell.cleanDirs [ " bin" ; " temp" ]
6257
6358Target.create " CleanDocs" <| fun _ -> Shell.cleanDirs [ " docs/output" ]
6459
6560// --------------------------------------------------------------------------------------
6661// Build library & test project
6762
68- Target.create " Restore" <| fun _ ->
69- !! " src/**/*.??proj"
70- -- " src/**/*.shproj"
63+ Target.create " Restore" <| fun _ ->
64+ !! " src/**/*.??proj" -- " src/**/*.shproj"
7165 |> Seq.iter ( fun pattern -> DotNet.restore id pattern)
7266
7367
74- Target.create " Build" <| fun _ ->
68+ Target.create " Build" <| fun _ ->
7569 " FSharp.Data.GraphQL.sln"
7670 |> DotNet.build ( fun o ->
7771 { o with
@@ -88,10 +82,18 @@ let startGraphQLServer (project : string) (streamRef : DataRef<Stream>) =
8882
8983 let projectName = Path.GetFileNameWithoutExtension ( project)
9084 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" )
9292
9393 CreateProcess.fromRawCommandLine " dotnet" serverExe
94- |> CreateProcess.withStandardInput ( CreatePipe streamRef) |> Proc.start |> ignore
94+ |> CreateProcess.withStandardInput ( CreatePipe streamRef)
95+ |> Proc.start
96+ |> ignore
9597
9698 System.Threading.Thread.Sleep ( 2000 )
9799
@@ -115,28 +117,43 @@ let starWarsServerStream = StreamRef.Empty
115117
116118Target.create " StartStarWarsServer" <| fun _ ->
117119 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+
119126 startGraphQLServer project starWarsServerStream
120127
121128Target.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
125133
126134let integrationServerStream = StreamRef.Empty
127135
128136Target.create " StartIntegrationServer" <| fun _ ->
129137 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+
131144 startGraphQLServer project integrationServerStream
132145
133146Target.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
136151
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"
138154
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"
140157
141158let prepareDocGen () =
142159 Shell.rm " docs/release-notes.md"
@@ -149,7 +166,7 @@ let prepareDocGen () =
149166
150167 Shell.cleanDir " .fsdocs"
151168
152- Target.create " GenerateDocs" <| fun _ ->
169+ Target.create " GenerateDocs" <| fun _ ->
153170 prepareDocGen ()
154171 DotNet.exec id " fsdocs" " build --clean" |> ignore
155172
@@ -158,42 +175,66 @@ Target.create "GenerateDocsWatch" <| fun _ ->
158175 DotNet.exec id " fsdocs" " watch --clean" |> ignore
159176 System.Console.ReadKey () |> ignore
160177
161- Target.create " ReleaseDocs" <| fun _ ->
178+ Target.create " ReleaseDocs" <| fun _ ->
162179 Git.Repository.clone " " projectRepo " temp/gh-pages"
163180 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 "
166187
167188 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+
169193 Git.Branches.push " temp/gh-pages"
170194
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+
171201let 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 ->
174210 { 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 })
179213
180214let 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
183218
184- Target.create " PublishServer" <| fun _ -> publishPackage " Server"
219+ projectPath
220+ |> DotNet.publish ( fun p ->
221+ { p with Common = { p.Common with WorkingDirectory = packageDir } })
185222
186- Target.create " PublishClient" <| fun _ -> publishPackage " Client"
223+ Target.create " PublishServer" <| fun _ -> publishPackage " Server"
224+
225+ Target.create " PublishClient" <| fun _ -> publishPackage " Client"
187226
188227Target.create " PublishMiddleware" <| fun _ -> publishPackage " Server.Middleware"
189228
190- Target.create " PackShared" <| fun _ -> pack " Shared"
229+ Target.create " PublishShared" <| fun _ -> publishPackage " Shared"
230+
231+ Target.create " PackServer" <| fun _ -> pack " Server"
191232
192- Target.create " PackServer " <| fun _ -> pack " Server "
233+ Target.create " PackClient " <| fun _ -> pack " Client "
193234
194- Target.create " PackClient " <| fun _ -> pack " Client "
235+ Target.create " PackMiddleware " <| fun _ -> pack " Server.Middleware "
195236
196- Target.create " PackMiddleware " <| fun _ -> pack " Server.Middleware "
237+ Target.create " PackShared " <| fun _ -> pack " Shared "
197238
198239
199240// --------------------------------------------------------------------------------------
@@ -212,7 +253,8 @@ Target.create "PackAll" ignore
212253 ==> " All"
213254 =?> ( " GenerateDocs" , Environment.environVar " APPVEYOR" = " True" )
214255
215- " CleanDocs" ==> " GenerateDocs"
256+ " CleanDocs"
257+ ==> " GenerateDocs"
216258
217259" PackShared"
218260 ==> " PackServer"
0 commit comments