Skip to content

Commit

Permalink
add bzip2 support
Browse files Browse the repository at this point in the history
Signed-off-by: Avi Deitcher <[email protected]>
  • Loading branch information
deitch committed Apr 1, 2024
1 parent a980fdc commit 52f432d
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 4 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/docker/distribution v2.8.2+incompatible // indirect
github.com/docker/go-units v0.5.0 // indirect
github.com/dsnet/compress v0.0.1 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/geoffgarside/ber v1.1.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKoh
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
Expand Down Expand Up @@ -134,8 +137,10 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
Expand Down Expand Up @@ -238,6 +243,7 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
Expand Down
21 changes: 21 additions & 0 deletions pkg/compression/bzip2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package compression

import (
"io"

"github.com/dsnet/compress/bzip2"
)

type Bzip2Compressor struct {
}

func (b *Bzip2Compressor) Uncompress(in io.Reader) (io.Reader, error) {
return bzip2.NewReader(in, nil)
}

func (b *Bzip2Compressor) Compress(out io.Writer) (io.WriteCloser, error) {
return bzip2.NewWriter(out, nil)
}
func (b *Bzip2Compressor) Extension() string {
return "tbz2"
}
4 changes: 3 additions & 1 deletion pkg/compression/compressor.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@ import (

type Compressor interface {
Uncompress(in io.Reader) (io.Reader, error)
Compress(out io.Writer) io.WriteCloser
Compress(out io.Writer) (io.WriteCloser, error)
Extension() string
}

func GetCompressor(name string) (Compressor, error) {
switch name {
case "gzip":
return &GzipCompressor{}, nil
case "bzip2":
return &Bzip2Compressor{}, nil
default:
return nil, fmt.Errorf("unknown compression format: %s", name)
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/compression/gzip.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ func (g *GzipCompressor) Uncompress(in io.Reader) (io.Reader, error) {
return gzip.NewReader(in)
}

func (g *GzipCompressor) Compress(out io.Writer) io.WriteCloser {
return gzip.NewWriter(out)
func (g *GzipCompressor) Compress(out io.Writer) (io.WriteCloser, error) {
return gzip.NewWriter(out), nil
}
func (g *GzipCompressor) Extension() string {
return "tgz"
Expand Down
5 changes: 4 additions & 1 deletion pkg/core/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@ func Dump(opts DumpOptions) error {
return fmt.Errorf("failed to open output file '%s': %v", outFile, err)
}
defer f.Close()
cw := compressor.Compress(f)
cw, err := compressor.Compress(f)
if err != nil {
return fmt.Errorf("failed to create compressor: %v", err)
}
if err := archive.Tar(workdir, cw); err != nil {
return fmt.Errorf("error creating the compressed archive: %v", err)
}
Expand Down

0 comments on commit 52f432d

Please sign in to comment.