Skip to content

Commit

Permalink
fix: always close file after hashing (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
Vilsol authored Dec 29, 2023
1 parent e313efd commit da61008
Showing 1 changed file with 23 additions and 14 deletions.
37 changes: 23 additions & 14 deletions cli/cache/download.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,22 +143,12 @@ func DownloadOrCache(cacheKey string, hash string, url string, updates chan<- ut
func downloadInternal(cacheKey string, location string, hash string, url string, updates chan<- utils.GenericProgress, downloadSemaphore chan int) (int64, error) {
stat, err := os.Stat(location)
if err == nil {
existingHash := ""

if hash != "" {
f, err := os.Open(location)
if err != nil {
return 0, fmt.Errorf("failed to open file: %s: %w", location, err)
}
defer f.Close()

existingHash, err = utils.SHA256Data(f)
if err != nil {
return 0, fmt.Errorf("could not compute hash for file: %s: %w", location, err)
}
matches, err := compareHash(hash, location)
if err != nil {
return 0, err
}

if hash == existingHash {
if matches {
return stat.Size(), nil
}

Expand Down Expand Up @@ -222,3 +212,22 @@ func downloadInternal(cacheKey string, location string, hash string, url string,

return resp.ContentLength, nil
}

func compareHash(hash string, location string) (bool, error) {
existingHash := ""

if hash != "" {
f, err := os.Open(location)
if err != nil {
return false, fmt.Errorf("failed to open file: %s: %w", location, err)
}
defer f.Close()

existingHash, err = utils.SHA256Data(f)
if err != nil {
return false, fmt.Errorf("could not compute hash for file: %s: %w", location, err)
}
}

return hash == existingHash, nil
}

0 comments on commit da61008

Please sign in to comment.