Skip to content

Commit fb5dcd0

Browse files
committed
mage: Improve error messages and resource handling
This commit includes minor developer tooling improvements: - Improves the checksum mismatch error message for better diagnostics. - Fix spurious "error closing" logs when double-closing files explicitely and with `defer`
1 parent 0c0dada commit fb5dcd0

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

dev-tools/mage/downloads/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func verifyChecksum(checksumFile string) error {
110110
}
111111

112112
if expectedChecksum != actualChecksum {
113-
return fmt.Errorf("checksum of file %s does not match expected checksum of %s", fileName, actualChecksum)
113+
return fmt.Errorf("%s checksum mismatch: expected=%s actual=%s", fileName, expectedChecksum, actualChecksum)
114114
}
115115

116116
return nil

dev-tools/mage/pkgtypes.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"archive/zip"
1010
"bytes"
1111
"compress/gzip"
12+
"errors"
1213
"fmt"
1314
"hash/fnv"
1415
"io"
@@ -666,27 +667,15 @@ func PackageTarGz(spec PackageSpec) error {
666667
if err != nil {
667668
return err
668669
}
669-
defer func() {
670-
if err := outFile.Close(); err != nil {
671-
log.Printf("failed to close output file: %v", err)
672-
}
673-
}()
670+
defer closeOrLog(outFile, "output file")
674671

675672
// Create a gzip writer to our output file
676673
gzWriter := gzip.NewWriter(outFile)
677-
defer func() {
678-
if err := gzWriter.Close(); err != nil {
679-
log.Printf("failed to close gzip writer: %v", err)
680-
}
681-
}()
674+
defer closeOrLog(gzWriter, "gzip writer")
682675

683676
// Create a new tar archive.
684677
w := tar.NewWriter(gzWriter)
685-
defer func() {
686-
if err := w.Close(); err != nil {
687-
log.Printf("failed to close tar writer: %v", err)
688-
}
689-
}()
678+
defer closeOrLog(gzWriter, "tar writer")
690679

691680
// // Replace the darwin-universal by darwin-x86_64 and darwin-arm64. Also
692681
// // keep the other files.
@@ -759,6 +748,14 @@ func PackageTarGz(spec PackageSpec) error {
759748
return nil
760749
}
761750

751+
func closeOrLog(closer io.Closer, what string) {
752+
err := closer.Close()
753+
if err == nil || errors.Is(err, os.ErrClosed) {
754+
return
755+
}
756+
log.Printf("failed to close %s: %v", what, err)
757+
}
758+
762759
// PackageDeb packages a deb file. This requires Docker to execute FPM.
763760
func PackageDeb(spec PackageSpec) error {
764761
return runFPM(spec, Deb)
@@ -953,7 +950,7 @@ func addFileToZip(ar *zip.Writer, baseDir string, pkgFile PackageFile) error {
953950
if err != nil {
954951
return err
955952
}
956-
defer file.Close()
953+
defer closeOrLog(file, "zip input file")
957954

958955
if _, err = io.Copy(w, file); err != nil {
959956
return err
@@ -1034,7 +1031,7 @@ func addFileToTar(ar *tar.Writer, baseDir string, pkgFile PackageFile) error {
10341031
if err != nil {
10351032
return err
10361033
}
1037-
defer file.Close()
1034+
defer closeOrLog(file, "tar input file")
10381035

10391036
if _, err = io.Copy(ar, file); err != nil {
10401037
return err

0 commit comments

Comments
 (0)