|
9 | 9 | "archive/zip" |
10 | 10 | "bytes" |
11 | 11 | "compress/gzip" |
| 12 | + "errors" |
12 | 13 | "fmt" |
13 | 14 | "hash/fnv" |
14 | 15 | "io" |
@@ -666,27 +667,15 @@ func PackageTarGz(spec PackageSpec) error { |
666 | 667 | if err != nil { |
667 | 668 | return err |
668 | 669 | } |
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") |
674 | 671 |
|
675 | 672 | // Create a gzip writer to our output file |
676 | 673 | 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") |
682 | 675 |
|
683 | 676 | // Create a new tar archive. |
684 | 677 | 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") |
690 | 679 |
|
691 | 680 | // // Replace the darwin-universal by darwin-x86_64 and darwin-arm64. Also |
692 | 681 | // // keep the other files. |
@@ -759,6 +748,14 @@ func PackageTarGz(spec PackageSpec) error { |
759 | 748 | return nil |
760 | 749 | } |
761 | 750 |
|
| 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 | + |
762 | 759 | // PackageDeb packages a deb file. This requires Docker to execute FPM. |
763 | 760 | func PackageDeb(spec PackageSpec) error { |
764 | 761 | return runFPM(spec, Deb) |
@@ -953,7 +950,7 @@ func addFileToZip(ar *zip.Writer, baseDir string, pkgFile PackageFile) error { |
953 | 950 | if err != nil { |
954 | 951 | return err |
955 | 952 | } |
956 | | - defer file.Close() |
| 953 | + defer closeOrLog(file, "zip input file") |
957 | 954 |
|
958 | 955 | if _, err = io.Copy(w, file); err != nil { |
959 | 956 | return err |
@@ -1034,7 +1031,7 @@ func addFileToTar(ar *tar.Writer, baseDir string, pkgFile PackageFile) error { |
1034 | 1031 | if err != nil { |
1035 | 1032 | return err |
1036 | 1033 | } |
1037 | | - defer file.Close() |
| 1034 | + defer closeOrLog(file, "tar input file") |
1038 | 1035 |
|
1039 | 1036 | if _, err = io.Copy(ar, file); err != nil { |
1040 | 1037 | return err |
|
0 commit comments