Skip to content

Commit 1a88866

Browse files
Bump version to 0.1.8-alpha
1 parent 9eec89d commit 1a88866

File tree

7 files changed

+115
-6
lines changed

7 files changed

+115
-6
lines changed

.paket/paket.bootstrapper.exe

24 KB
Binary file not shown.

RELEASE_NOTES.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### 0.1.8-alpha - Dec 14, 2015
2+
* Update FsPickler dependency.
3+
14
### 0.1.7-alpha - Dec 11, 2015
25
* Update FsPickler dependency.
36

@@ -53,4 +56,4 @@
5356
* Minor Additions
5457

5558
### 0.0.1-alpha - April 17, 2014
56-
* Initial release
59+
* Initial release
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
#I __SOURCE_DIRECTORY__
2+
#I @"../../../../../packages/Octokit/lib/net45"
3+
#I @"../../../../../../packages/build/Octokit/lib/net45"
4+
#r "Octokit.dll"
5+
6+
open Octokit
7+
open System
8+
open System.IO
9+
10+
type Draft =
11+
{ Client : GitHubClient
12+
Owner : string
13+
Project : string
14+
DraftRelease : Release }
15+
16+
let private isRunningOnMono = System.Type.GetType ("Mono.Runtime") <> null
17+
18+
/// A version of 'reraise' that can work inside computation expressions
19+
let private captureAndReraise ex =
20+
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Capture(ex).Throw()
21+
Unchecked.defaultof<_>
22+
23+
/// Retry the Octokit action count times
24+
let rec private retry count asyncF =
25+
// This retry logic causes an exception on Mono:
26+
// https://github.com/fsharp/fsharp/issues/440
27+
if isRunningOnMono then
28+
asyncF
29+
else
30+
async {
31+
try
32+
return! asyncF
33+
with ex ->
34+
return!
35+
match (ex, ex.InnerException) with
36+
| (:? AggregateException, (:? AuthorizationException as ex)) -> captureAndReraise ex
37+
| _ when count > 0 -> retry (count - 1) asyncF
38+
| (ex, _) -> captureAndReraise ex
39+
}
40+
41+
/// Retry the Octokit action count times after input succeed
42+
let private retryWithArg count input asycnF =
43+
async {
44+
let! choice = input |> Async.Catch
45+
match choice with
46+
| Choice1Of2 input' ->
47+
return! (asycnF input') |> retry count
48+
| Choice2Of2 ex ->
49+
return captureAndReraise ex
50+
}
51+
52+
let createClient user password =
53+
async {
54+
let github = new GitHubClient(new ProductHeaderValue("FAKE"))
55+
github.Credentials <- Credentials(user, password)
56+
return github
57+
}
58+
59+
let createClientWithToken token =
60+
async {
61+
let github = new GitHubClient(new ProductHeaderValue("FAKE"))
62+
github.Credentials <- Credentials(token)
63+
return github
64+
}
65+
66+
let private makeRelease draft owner project version prerelease (notes:seq<string>) (client : Async<GitHubClient>) =
67+
retryWithArg 5 client <| fun client' -> async {
68+
let data = new NewRelease(version)
69+
data.Name <- version
70+
data.Body <- String.Join(Environment.NewLine, notes)
71+
data.Draft <- draft
72+
data.Prerelease <- prerelease
73+
let! draft = Async.AwaitTask <| client'.Release.Create(owner, project, data)
74+
let draftWord = if data.Draft then " draft" else ""
75+
printfn "Created%s release id %d" draftWord draft.Id
76+
return {
77+
Client = client'
78+
Owner = owner
79+
Project = project
80+
DraftRelease = draft }
81+
}
82+
83+
let createDraft owner project version prerelease notes client = makeRelease true owner project version prerelease notes client
84+
let createRelease owner project version prerelease notes client = makeRelease false owner project version prerelease notes client
85+
86+
let uploadFile fileName (draft : Async<Draft>) =
87+
retryWithArg 5 draft <| fun draft' -> async {
88+
let fi = FileInfo(fileName)
89+
let archiveContents = File.OpenRead(fi.FullName)
90+
let assetUpload = new ReleaseAssetUpload(fi.Name,"application/octet-stream",archiveContents,Nullable<TimeSpan>())
91+
let! asset = Async.AwaitTask <| draft'.Client.Release.UploadAsset(draft'.DraftRelease, assetUpload)
92+
printfn "Uploaded %s" asset.Name
93+
return draft'
94+
}
95+
96+
let releaseDraft (draft : Async<Draft>) =
97+
retryWithArg 5 draft <| fun draft' -> async {
98+
let update = draft'.DraftRelease.ToUpdate()
99+
update.Draft <- Nullable<bool>(false)
100+
let! released = Async.AwaitTask <| draft'.Client.Release.Edit(draft'.Owner, draft'.Project, draft'.DraftRelease.Id, update)
101+
printfn "Released %d on github" released.Id
102+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
source http://nuget.org/api/v2
2+
3+
nuget Octokit
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
25ca24118d3b0f7b51d5c72e6895b27329683b59

paket.dependencies

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ source https://www.nuget.org/api/v2/
33

44
nuget Nuget.CommandLine
55
nuget FAKE
6-
nuget FsPickler ~> 1.6.2
6+
nuget FsPickler >= 1.7.0
77
nuget FsUnit 1.3.0.1
88
nuget NUnit 2.6.3
99
nuget Unquote 2.2.2
10-
github fsharp/FAKE modules/Octokit/Octokit.fsx
10+
github fsharp/FAKE modules/Octokit/Octokit.fsx

paket.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ REDIRECTS: ON
22
NUGET
33
remote: https://nuget.org/api/v2
44
specs:
5-
FAKE (4.10.3)
6-
FsPickler (1.6.2)
5+
FAKE (4.10.5)
6+
FsPickler (1.7.0)
77
FsUnit (1.3.0.1)
88
NUnit (>= 2.6.3)
99
Microsoft.Bcl (1.1.10)
@@ -20,5 +20,5 @@ NUGET
2020
GITHUB
2121
remote: fsharp/FAKE
2222
specs:
23-
modules/Octokit/Octokit.fsx (917a86046700e4eaaa2aa09de7895e048eaaa1b1)
23+
modules/Octokit/Octokit.fsx (25ca24118d3b0f7b51d5c72e6895b27329683b59)
2424
Octokit

0 commit comments

Comments
 (0)