tasks/github.min
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
#!/usr/bin/env min
"_helpers" load
'helpers import
"next-release.md" fread escape :release-body
"tasks/templates/draft-release.json" fread :draft-release-template
config /version :min-version
env /github-token :token
draft-release-template ("version" min-version "body" release-body) =% :draft-release-body
{}
"application/vnd.github.v3+json" %Accept
"token $#" (token) =% %Authorization
:headers
(
response to-json "response.json" fwrite
response /status :status
(status 300 >) (
response /body from-json :body
body /message :message
status string @status
"Error $#: $#" (status message) =% error status int exit
) when
) :handle-errors
(
:data
data /endpoint :endpoint
"api" :subdomain
(data ?subdomain) (data /subdomain @subdomain) when
"https://$#.github.com/repos/h3rald/min$#" (subdomain endpoint) =% :url
{}
url %url
data /method %method
(data ?headers)
(data /headers %headers)
(headers %headers)
if
(data ?body) (data /body %body) when
request :response
response /status :status
response /body :body
handle-errors
(body length 0 >) (body from-json) ({}) if
) :gh-req
(
:data
data /id :id
{}
"/releases/$#/assets" (id) =% %endpoint
"GET" %method
gh-req
) :get-assets
(
config get-assets =assets
config /id :id
assets (/id) map =assets-ids
assets-ids (
:asset
{}
"/releases/assets/$#" (asset) =% %endpoint
"DELETE" %method
gh-req
) foreach
) :delete-assets
; Module symbols
{}
(
{}
"/releases" %endpoint
"POST" %method
draft-release-body %body
gh-req /id string :id
; Save Release ID to min.yml
config id %id to-yaml "min.yml" fwrite
"Draft release v$# ($#) created successfully" (min-version id) =% notice
) %draft
(
config /id :id
{}
"/releases/$#" (id) =% %endpoint
"PATCH" %method
draft-release-body %body
gh-req /id string :id
"Draft release v$# ($#) updated successfully" (min-version id) =% notice
) %update
(
config get-assets =assets
assets size :total
"are" :verb
(total 1 ==) ("is" @verb) when
"There $# $# assets in release v$#" (verb total min-version) =% notice
assets (/name () cons "- $#" swap % notice) foreach
assets
) %assets
(
config /id :id
config delete-assets
. ls ("\.zip$" match) filter
(
filename :file
"Uploading: $#" (file) =% notice
file fread :body
headers "application/zip" %Content-Type :asset-headers
{}
"/releases/$#/assets?name=$#" (id file) =% %endpoint
asset-headers %headers
"uploads" %subdomain
"POST" %method
body %body
gh-req
) foreach
) %upload
+github-tasks
|