Skip to content

Commit d5f0c88

Browse files
John BerzyJohn Berzy
John Berzy
authored and
John Berzy
committed
more migration to .net5
1 parent dd66afa commit d5f0c88

24 files changed

+300
-389
lines changed

.config/dotnet-tools.json

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
{
2-
"version": 1,
3-
"isRoot": true,
4-
"tools": {
5-
"paket": {
6-
"version": "5.257.0",
7-
"commands": [
8-
"paket"
9-
]
10-
},
11-
"fake-cli": {
12-
"version": "5.20.4",
13-
"commands": [
14-
"fake"
15-
]
16-
},
17-
"fsharp.formatting.commandtool": {
18-
"version": "9.0.4",
19-
"commands": [
20-
"fsdocs"
21-
]
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"paket": {
6+
"version": "5.257.0",
7+
"commands": [
8+
"paket"
9+
]
10+
},
11+
"fake-cli": {
12+
"version": "5.20.4",
13+
"commands": [
14+
"fake"
15+
]
16+
},
17+
"fsharp.formatting.commandtool": {
18+
"version": "11.1.0",
19+
"commands": [
20+
"fsdocs"
21+
]
22+
}
2223
}
23-
}
2424
}

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ $RECYCLE.BIN/
169169
packages/
170170

171171
# Generated documentation folder
172-
docs/output/
172+
/output/
173173

174174
# Temp folder used for publishing docs
175175
temp/

RELEASE_NOTES.md

+7-8
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,11 @@
156156
### 1.0.7 - December 30 2020
157157
* Add static TypeProvider parameter `explicitOptionalParameters`.
158158

159-
### 1.0.8 - April 09 2021
159+
### 1.0.8 - April 18 2021
160160
* Remove Desktop build
161-
* Fix build scripts
162-
163-
### 1.0.9 - April 09 2021
164-
* TP Bugfixes
165-
166-
### 1.0.10 - April 09 2021
167-
* TP Bugfixes
161+
* Update documentation and build tools
162+
* Upgrade build scripts
163+
* Migrate from netcoreapp2.0 to net5.0 for tests and samples
164+
* Target netstandard2.0 exclusively for Type Providers
165+
* Make FSharp.Data.GraphQL.Shared a Nuget package
166+
* Fix parser bug. Thanks to @njlr

build.fsx

+23-180
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ open Octokit
4444

4545
let project = "FSharp.Data.GraphQL"
4646
let summary = "FSharp implementation of Facebook GraphQL query language"
47-
let gitOwner = "fsprojects"
48-
let gitHome = "https://github.com/" + gitOwner
4947
let gitName = "FSharp.Data.GraphQL"
5048
let release = ReleaseNotes.load "RELEASE_NOTES.md"
49+
let projectRepo = "https://github.com/fsprojects/FSharp.Data.GraphQL.git"
5150

5251
// Generate assembly info files with the right version & up-to-date information
5352
Target.create "AssemblyInfo" (fun _ ->
@@ -78,7 +77,7 @@ Target.create "AssemblyInfo" (fun _ ->
7877
)
7978

8079
!! "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"
8281
|> Seq.map getProjectDetails
8382
|> Seq.iter (fun (projFileName, _, folderName, attributes) ->
8483
AssemblyInfoFile.createFSharp (folderName </> "AssemblyInfo.fs") (attributes @ internalsVisibility projFileName)
@@ -175,179 +174,36 @@ Target.create "RunIntegrationTests" (fun _ ->
175174
runTests "tests/FSharp.Data.GraphQL.IntegrationTests/FSharp.Data.GraphQL.IntegrationTests.fsproj"
176175
)
177176

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"
200181

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"
203185

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"
208187

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
226191
)
227192

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
235196
System.Console.ReadKey() |> ignore
236-
237-
watcher.Dispose()
238197
)
239198

240-
Target.create "GenerateDocs" ignore
241-
242199
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"
351207
)
352208

353209
let pack id =
@@ -413,24 +269,11 @@ Target.create "PackAll" ignore
413269
==> "StartIntegrationServer"
414270
==> "RunIntegrationTests"
415271
==> "All"
416-
=?> ("GenerateReferenceDocs", Environment.environVar "APPVEYOR" = "True")
417272
=?> ("GenerateDocs", Environment.environVar "APPVEYOR" = "True")
418-
=?> ("ReleaseDocs",BuildServer.isLocalBuild)
419273

420274
"CleanDocs"
421-
==> "GenerateHelp"
422-
==> "GenerateReferenceDocs"
423275
==> "GenerateDocs"
424276

425-
"CleanDocs"
426-
==> "GenerateHelpDebug"
427-
428-
"GenerateHelpDebug"
429-
==> "KeepRunning"
430-
431-
"ReleaseDocs"
432-
==> "Release"
433-
434277
"PackShared"
435278
==> "PackServer"
436279
==> "PackClient"

0 commit comments

Comments
 (0)