github.com/mgoltzsche/ctnr@v0.7.1-alpha/pkg/fs/source/sourcetarbz.go (about) 1 package source 2 3 import ( 4 "compress/bzip2" 5 "os" 6 7 "github.com/mgoltzsche/ctnr/pkg/fs" 8 "github.com/pkg/errors" 9 ) 10 11 var _ fs.Source = NewSourceTarBz("") 12 13 type sourceTarBz sourceTar 14 15 func NewSourceTarBz(file string) fs.Source { 16 s := sourceTarBz(sourceTar{file, ""}) 17 return &s 18 } 19 20 func (s *sourceTarBz) Attrs() fs.NodeInfo { 21 return (*sourceTar)(s).Attrs() 22 } 23 24 func (s *sourceTarBz) DeriveAttrs() (fs.DerivedAttrs, error) { 25 return (*sourceTar)(s).DeriveAttrs() 26 } 27 28 func (s *sourceTarBz) Write(dest, name string, w fs.Writer, _ map[fs.Source]string) (err error) { 29 f, err := os.Open(s.file) 30 if err != nil { 31 return errors.Wrap(err, "extract tar.bz") 32 } 33 defer f.Close() 34 r := bzip2.NewReader(f) 35 if err = unpackTar(r, dest, w); err != nil { 36 return errors.Wrap(err, "extract tar.bz") 37 } 38 return 39 }