(release Release, filepaths []string)
| 196 | } |
| 197 | |
| 198 | func 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 | |
| 241 | func fileSize(file *os.File) (int64, error) { |
| 242 | stat, err := file.Stat() |
no test coverage detected