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

Lines changed: 19 additions & 14 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy