Skip to content

Commit 6bebcc2

Browse files
committed
Split out a method for doing a single upload attempt to prevent resource leaks.
1 parent d089cfe commit 6bebcc2

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

internal/push/push.go

+19-14
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,24 @@ func (pushService *pushService) uploadReleaseAsset(release *github.RepositoryRel
307307
return asset, response, nil
308308
}
309309

310+
func (pushService *pushService) uploadAsset(release *github.RepositoryRelease, assetPathStat os.FileInfo) (*github.Response, error) {
311+
assetFile, err := os.Open(pushService.cacheDirectory.AssetPath(release.GetTagName(), assetPathStat.Name()))
312+
if err != nil {
313+
return nil, errors.Wrap(err, "Error opening release asset.")
314+
}
315+
defer assetFile.Close()
316+
progressReader := &ioprogress.Reader{
317+
Reader: assetFile,
318+
Size: assetPathStat.Size(),
319+
DrawFunc: ioprogress.DrawTerminalf(os.Stderr, ioprogress.DrawTextFormatBytes),
320+
}
321+
if err != nil {
322+
return nil, errors.Wrap(err, "Error opening release asset.")
323+
}
324+
_, response, err := pushService.uploadReleaseAsset(release, assetPathStat, progressReader)
325+
return response, err
326+
}
327+
310328
func (pushService *pushService) createOrUpdateReleaseAsset(release *github.RepositoryRelease, existingAssets []*github.ReleaseAsset, assetPathStat os.FileInfo) error {
311329
attempt := 0
312330
for {
@@ -327,20 +345,7 @@ func (pushService *pushService) createOrUpdateReleaseAsset(release *github.Repos
327345
}
328346
}
329347
log.Debugf("Uploading release asset %s...", assetPathStat.Name())
330-
assetFile, err := os.Open(pushService.cacheDirectory.AssetPath(release.GetTagName(), assetPathStat.Name()))
331-
if err != nil {
332-
return errors.Wrap(err, "Error opening release asset.")
333-
}
334-
defer assetFile.Close()
335-
progressReader := &ioprogress.Reader{
336-
Reader: assetFile,
337-
Size: assetPathStat.Size(),
338-
DrawFunc: ioprogress.DrawTerminalf(os.Stderr, ioprogress.DrawTextFormatBytes),
339-
}
340-
if err != nil {
341-
return errors.Wrap(err, "Error opening release asset.")
342-
}
343-
_, response, err := pushService.uploadReleaseAsset(release, assetPathStat, progressReader)
348+
response, err := pushService.uploadAsset(release, assetPathStat)
344349
if err == nil {
345350
return nil
346351
} else {

0 commit comments

Comments
 (0)