@@ -44,10 +44,9 @@ open Octokit
44
44
45
45
let project = " FSharp.Data.GraphQL"
46
46
let summary = " FSharp implementation of Facebook GraphQL query language"
47
- let gitOwner = " fsprojects"
48
- let gitHome = " https://github.com/" + gitOwner
49
47
let gitName = " FSharp.Data.GraphQL"
50
48
let release = ReleaseNotes.load " RELEASE_NOTES.md"
49
+ let projectRepo = " https://github.com/fsprojects/FSharp.Data.GraphQL.git"
51
50
52
51
// Generate assembly info files with the right version & up-to-date information
53
52
Target.create " AssemblyInfo" ( fun _ ->
@@ -78,7 +77,7 @@ Target.create "AssemblyInfo" (fun _ ->
78
77
)
79
78
80
79
!! " src/**/*.fsproj"
81
- -- " src/FSharp.Data.GraphQL.Client.DesignTime/FSharp.Data.GraphQL.Client.DesignTime.fsproj"
80
+ // -- "src/FSharp.Data.GraphQL.Client.DesignTime/FSharp.Data.GraphQL.Client.DesignTime.fsproj"
82
81
|> Seq.map getProjectDetails
83
82
|> Seq.iter ( fun ( projFileName , _ , folderName , attributes ) ->
84
83
AssemblyInfoFile.createFSharp ( folderName </> " AssemblyInfo.fs" ) ( attributes @ internalsVisibility projFileName)
@@ -175,179 +174,36 @@ Target.create "RunIntegrationTests" (fun _ ->
175
174
runTests " tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
176
175
)
177
176
178
- // --------------------------------------------------------------------------------------
179
- // Generate the documentation
180
-
181
- // Documentation
182
- let buildDocumentationTarget fsiargs target =
183
- // TODO:
184
- ()
185
-
186
- Target.create " GenerateReferenceDocs" ( fun _ ->
187
- buildDocumentationTarget " -d:RELEASE -d:REFERENCE" " Default"
188
- )
189
-
190
- let generateHelp ' fail debug =
191
- let args =
192
- if debug then " --define:HELP"
193
- else " --define:RELEASE --define:HELP"
194
- try
195
- buildDocumentationTarget args " Default"
196
- Trace.traceImportant " Help generated"
197
- with
198
- | _ when not fail ->
199
- Trace.traceImportant " generating help documentation failed"
177
+ let prepareDocGen () =
178
+ Shell.rm " docs/release-notes.md"
179
+ Shell.cp " RELEASE_NOTES.md" " docs/RELEASE_NOTES.md"
180
+ Shell.rename " docs/release-notes.md" " docs/RELEASE_NOTES.md"
200
181
201
- let generateHelp fail =
202
- generateHelp' fail false
182
+ Shell.rm " docs/license.md"
183
+ Shell.cp " LICENSE.txt" " docs/LICENSE.txt"
184
+ Shell.rename " docs/license.md" " docs/LICENSE.txt"
203
185
204
- Target.create " GenerateHelp" ( fun _ ->
205
- Shell.rm " docs/content/release-notes.md"
206
- Shell.cp " docs/content/" " RELEASE_NOTES.md"
207
- Shell.rename " docs/content/release-notes.md" " docs/content/RELEASE_NOTES.md"
186
+ Shell.cleanDir " .fsdocs"
208
187
209
- Shell.rm " docs/content/license.md"
210
- Shell.cp " docs/content/" " LICENSE.txt"
211
- Shell.rename " docs/content/license.md" " docs/content/LICENSE.txt"
212
-
213
- generateHelp true
214
- )
215
-
216
- Target.create " GenerateHelpDebug" ( fun _ ->
217
- Shell.rm " docs/content/release-notes.md"
218
- Shell.cp " docs/content/" " RELEASE_NOTES.md"
219
- Shell.rename " docs/content/release-notes.md" " docs/content/RELEASE_NOTES.md"
220
-
221
- Shell.rm " docs/content/license.md"
222
- Shell.cp " docs/content/" " LICENSE.txt"
223
- Shell.rename " docs/content/license.md" " docs/content/LICENSE.txt"
224
-
225
- generateHelp' true true
188
+ Target.create " GenerateDocs" ( fun _ ->
189
+ prepareDocGen ()
190
+ DotNet.exec id " fsdocs" " build --clean" |> ignore
226
191
)
227
192
228
- Target.create " KeepRunning" ( fun _ ->
229
- use watcher = !! " docs/content/**/*.*" |> ChangeWatcher.run ( fun _ ->
230
- generateHelp' true true
231
- )
232
-
233
- Trace.traceImportant " Waiting for help edits. Press any key to stop."
234
-
193
+ Target.create " GenerateDocsWatch" ( fun _ ->
194
+ prepareDocGen ()
195
+ DotNet.exec id " fsdocs" " watch --clean" |> ignore
235
196
System.Console.ReadKey() |> ignore
236
-
237
- watcher.Dispose()
238
197
)
239
198
240
- Target.create " GenerateDocs" ignore
241
-
242
199
Target.create " ReleaseDocs" ( fun _ ->
243
- let tempDocsDir = " temp/gh-pages"
244
- Shell.cleanDir tempDocsDir
245
- Repository.cloneSingleBranch " " ( gitHome + " /" + gitName + " .git" ) " gh-pages" tempDocsDir
246
-
247
- Shell.copyRecursive " docs/output" tempDocsDir true |> Trace.tracefn " %A "
248
- Git.Staging.stageAll tempDocsDir
249
- Git.Commit.exec tempDocsDir ( sprintf " Update generated documentation for version %s " release.NugetVersion)
250
- Branches.push tempDocsDir
251
- )
252
-
253
- let captureAndReraise ex =
254
- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture( ex) .Throw()
255
- Unchecked.defaultof<_>
256
-
257
- let rec retry count asyncF =
258
- // This retry logic causes an exception on Mono:
259
- // https://github.com/fsharp/fsharp/issues/440
260
- if not ( isNull ( System.Type.GetType( " Mono.Runtime" ))) then
261
- asyncF
262
- else
263
- async {
264
- try
265
- return ! asyncF
266
- with ex ->
267
- return !
268
- match ( ex, ex.InnerException) with
269
- | (: ? AggregateException , (:? AuthorizationException as ex )) -> captureAndReraise ex
270
- | _ when count > 0 -> retry ( count - 1 ) asyncF
271
- | ( ex, _) -> captureAndReraise ex
272
- }
273
-
274
- let retryWithArg count input asycnF =
275
- async {
276
- let! choice = input |> Async.Catch
277
- match choice with
278
- | Choice1Of2 input' ->
279
- return ! ( asycnF input') |> retry count
280
- | Choice2Of2 ex ->
281
- return captureAndReraise ex
282
- }
283
-
284
- [<NoComparison>]
285
- type Draft =
286
- { Client : GitHubClient
287
- Owner : string
288
- Project : string
289
- DraftRelease : Release }
290
-
291
- let makeRelease draft owner project version prerelease ( notes : seq < string >) ( client : Async < GitHubClient >) =
292
- retryWithArg 5 client <| fun client' -> async {
293
- let data = NewRelease( version)
294
- data.Name <- version
295
- data.Body <- String.Join( Environment.NewLine, notes)
296
- data.Draft <- draft
297
- data.Prerelease <- prerelease
298
- let! draft = Async.AwaitTask <| client'.Repository.Release.Create( owner, project, data)
299
- let draftWord = if data.Draft then " draft" else " "
300
- printfn " Created%s release id %d " draftWord draft.Id
301
- return {
302
- Client = client'
303
- Owner = owner
304
- Project = project
305
- DraftRelease = draft }
306
- }
307
-
308
- let createDraft owner project version prerelease notes client =
309
- makeRelease true owner project version prerelease notes client
310
-
311
- let releaseDraft ( draft : Async < Draft >) =
312
- retryWithArg 5 draft <| fun draft' -> async {
313
- let update = draft'.DraftRelease.ToUpdate()
314
- update.Draft <- Nullable< bool>( false )
315
- let! released = Async.AwaitTask <| draft'.Client.Repository.Release.Edit( draft'.Owner, draft'.Project, draft'.DraftRelease.Id, update)
316
- printfn " Released %d on github" released.Id
317
- }
318
-
319
- Target.create " Release" ( fun _ ->
320
- let user =
321
- match Environment.environVarOrDefault " github-user" System.String.Empty with
322
- | s when not ( String.IsNullOrWhiteSpace s) -> s
323
- | _ -> UserInput.getUserInput " Username: "
324
- let pw =
325
- match Environment.environVarOrDefault " github-pw" System.String.Empty with
326
- | s when not ( String.IsNullOrWhiteSpace s) -> s
327
- | _ -> UserInput.getUserPassword " Password: "
328
- let remote =
329
- Git.CommandHelper.getGitResult " " " remote -v"
330
- |> Seq.filter ( fun ( s : string ) -> s.EndsWith( " (push)" ))
331
- |> Seq.tryFind ( fun ( s : string ) -> s.Contains( gitOwner + " /" + gitName))
332
- |> function None -> gitHome + " /" + gitName | Some ( s: string) -> s.Split().[ 0 ]
333
-
334
- Git.Staging.stageAll " "
335
- Git.Commit.exec " " ( sprintf " Bump version to %s " release.NugetVersion)
336
- Git.Branches.pushBranch " " remote ( Information.getBranchName " " )
337
-
338
- Git.Branches.tag " " release.NugetVersion
339
- Git.Branches.pushTag " " remote release.NugetVersion
340
-
341
- GitHub.createClient user pw
342
- |> createDraft gitOwner gitName release.NugetVersion ( release.SemVer.PreRelease <> None) release.Notes
343
- |> releaseDraft
344
- |> Async.RunSynchronously
345
- )
346
-
347
- Target.create " AdHocBuild" ( fun _ ->
348
- !! " src/FSharp.Data.GraphQL.Client/FSharp.Data.GraphQL.Client.fsproj"
349
- |> MSBuild.runRelease id " bin/FSharp.Data.GraphQL.Client" " Build"
350
- |> Trace.logItems " Output: "
200
+ Git.Repository.clone " " projectRepo " temp/gh-pages"
201
+ Git.Branches.checkoutBranch " temp/gh-pages" " gh-pages"
202
+ Shell.copyRecursive " output" " temp/gh-pages" true |> printfn " %A "
203
+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" " add ." |> printfn " %s "
204
+ let cmd = sprintf """ commit -a -m "Update generated documentation for version %s """ release.NugetVersion
205
+ Git.CommandHelper.runSimpleGitCommand " temp/gh-pages" cmd |> printfn " %s "
206
+ Git.Branches.push " temp/gh-pages"
351
207
)
352
208
353
209
let pack id =
@@ -413,24 +269,11 @@ Target.create "PackAll" ignore
413
269
==> " StartIntegrationServer"
414
270
==> " RunIntegrationTests"
415
271
==> " All"
416
- =?> ( " GenerateReferenceDocs" , Environment.environVar " APPVEYOR" = " True" )
417
272
=?> ( " GenerateDocs" , Environment.environVar " APPVEYOR" = " True" )
418
- =?> ( " ReleaseDocs" , BuildServer.isLocalBuild)
419
273
420
274
" CleanDocs"
421
- ==> " GenerateHelp"
422
- ==> " GenerateReferenceDocs"
423
275
==> " GenerateDocs"
424
276
425
- " CleanDocs"
426
- ==> " GenerateHelpDebug"
427
-
428
- " GenerateHelpDebug"
429
- ==> " KeepRunning"
430
-
431
- " ReleaseDocs"
432
- ==> " Release"
433
-
434
277
" PackShared"
435
278
==> " PackServer"
436
279
==> " PackClient"
0 commit comments