From ba1e1a77db3d71622eb50bd6af308b49ff7e9099 Mon Sep 17 00:00:00 2001 From: Clayton Craft Date: Tue, 21 Feb 2023 12:37:46 -0800 Subject: [PATCH] archive: Use compression level when generating archive (MR 25) --- internal/archive/archive.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/internal/archive/archive.go b/internal/archive/archive.go index b22b2a9..3b10ce6 100644 --- a/internal/archive/archive.go +++ b/internal/archive/archive.go @@ -284,9 +284,26 @@ func (archive *Archive) writeCompressed(path string, mode os.FileMode) error { switch archive.compress_format { case FormatGzip: - compressor = gzip.NewWriter(fd) + level := gzip.DefaultCompression + switch archive.compress_level { + case LevelBest: + level = gzip.BestCompression + case LevelFast: + level = gzip.BestSpeed + } + compressor, err = gzip.NewWriterLevel(fd, level) + if err != nil { + return err + } case FormatZstd: - compressor, err = zstd.NewWriter(fd) + level := zstd.SpeedDefault + switch archive.compress_level { + case LevelBest: + level = zstd.SpeedBestCompression + case LevelFast: + level = zstd.SpeedFastest + } + compressor, err = zstd.NewWriter(fd, zstd.WithEncoderLevel(level)) if err != nil { return err }