Skip to content

Commit 50db1b7

Browse files
committed
refactor: extract method for cache validation
Signed-off-by: Anders F Björklund <[email protected]>
1 parent 8288a76 commit 50db1b7

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

pkg/downloader/downloader.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,11 @@ func Download(local, remote string, opts ...Opt) (*Result, error) {
191191
}
192192
if _, err := os.Stat(shadData); err == nil {
193193
logrus.Debugf("file %q is cached as %q", localPath, shadData)
194-
if shadDigestB, err := os.ReadFile(shadDigest); err == nil {
194+
if _, err := os.Stat(shadDigest); err == nil {
195195
logrus.Debugf("Comparing digest %q with the cached digest file %q, not computing the actual digest of %q",
196196
o.expectedDigest, shadDigest, shadData)
197-
shadDigestS := strings.TrimSpace(string(shadDigestB))
198-
if o.expectedDigest.String() != shadDigestS {
199-
return nil, fmt.Errorf("expected digest %q does not match the cached digest %q", o.expectedDigest.String(), shadDigestS)
197+
if err := validateCachedDigest(shadDigest, o.expectedDigest); err != nil {
198+
return nil, err
200199
}
201200
if err := copyLocal(localPath, shadData, ext, o.decompress, "", ""); err != nil {
202201
return nil, err
@@ -295,6 +294,9 @@ func copyLocal(dst, src, ext string, decompress bool, description string, expect
295294
return err
296295
}
297296

297+
if expectedDigest != "" {
298+
logrus.Debugf("verifying digest of local file %q (%s)", srcPath, expectedDigest)
299+
}
298300
if err := validateLocalFileDigest(srcPath, expectedDigest); err != nil {
299301
return err
300302
}
@@ -383,14 +385,28 @@ func decompressLocal(dst, src, ext string, description string) error {
383385
return err
384386
}
385387

388+
func validateCachedDigest(shadDigest string, expectedDigest digest.Digest) error {
389+
if expectedDigest == "" {
390+
return nil
391+
}
392+
shadDigestB, err := os.ReadFile(shadDigest)
393+
if err != nil {
394+
return err
395+
}
396+
shadDigestS := strings.TrimSpace(string(shadDigestB))
397+
if shadDigestS != expectedDigest.String() {
398+
return fmt.Errorf("expected digest %q, got %q", expectedDigest, shadDigestS)
399+
}
400+
return nil
401+
}
402+
386403
func validateLocalFileDigest(localPath string, expectedDigest digest.Digest) error {
387404
if localPath == "" {
388405
return fmt.Errorf("validateLocalFileDigest: got empty localPath")
389406
}
390407
if expectedDigest == "" {
391408
return nil
392409
}
393-
logrus.Debugf("verifying digest of local file %q (%s)", localPath, expectedDigest)
394410
algo := expectedDigest.Algorithm()
395411
if !algo.Available() {
396412
return fmt.Errorf("expected digest algorithm %q is not available", algo)

0 commit comments

Comments
 (0)