MCPcopy Create free account
hub / github.com/c4milo/github-release / publishRelease

Function publishRelease

main.go:198–239  ·  view source on GitHub ↗
(release Release, filepaths []string)

Source from the content-addressed store, hash-verified

196}
197
198func publishRelease(release Release, filepaths []string) {
199 endpoint := fmt.Sprintf("%s/releases", githubAPIEndpoint)
200 releaseData, err := json.Marshal(release)
201 if err != nil {
202 log.Fatalln(err)
203 }
204
205 releaseBuffer := bytes.NewBuffer(releaseData)
206
207 data, err := doRequest("POST", endpoint, "application/json", releaseBuffer, int64(releaseBuffer.Len()))
208
209 if err != nil && data != nil {
210 log.Println(err)
211 log.Println("Trying again assuming release already exists.")
212 endpoint = fmt.Sprintf("%s/releases/tags/%s", githubAPIEndpoint, release.TagName)
213 data, err = doRequest("GET", endpoint, "application/json", nil, int64(0))
214 }
215
216 if err != nil {
217 log.Fatalln(err)
218 }
219
220 // Gets the release Upload URL from the returned JSON data
221 err = json.Unmarshal(data, &release)
222 if err != nil {
223 log.Fatalln(err)
224 }
225
226 // Upload URL comes like this https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name}
227 // So we need to remove the {?name} part
228 uploadURL := strings.Split(release.UploadURL, "{")[0]
229
230 var wg sync.WaitGroup
231 for i := range filepaths {
232 wg.Add(1)
233 func(index int) {
234 uploadFile(uploadURL, filepaths[index])
235 wg.Done()
236 }(i)
237 }
238 wg.Wait()
239}
240
241func fileSize(file *os.File) (int64, error) {
242 stat, err := file.Stat()

Callers 2

mainFunction · 0.85
CreateReleaseFunction · 0.85

Calls 2

doRequestFunction · 0.85
uploadFileFunction · 0.85

Tested by

no test coverage detected