@@ -17,9 +17,7 @@ limitations under the License.
1717package main
1818
1919import (
20- "archive/tar"
2120 "bytes"
22- "compress/gzip"
2321 "context"
2422 "errors"
2523 "fmt"
@@ -31,6 +29,7 @@ import (
3129 "strings"
3230
3331 oci "github.com/fluxcd/pkg/oci/client"
32+ "github.com/fluxcd/pkg/tar"
3433 sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
3534 "github.com/gonvenience/ytbx"
3635 "github.com/google/shlex"
@@ -272,38 +271,8 @@ func extractTo(archivePath, destDir string) error {
272271 return err
273272 }
274273
275- gzipReader , err := gzip .NewReader (archiveFH )
276- if err != nil {
277- return fmt .Errorf ("gzip.NewREader(): %w" , err )
278- }
279-
280- tarReader := tar .NewReader (gzipReader )
281-
282- for {
283- header , err := tarReader .Next ()
284- if errors .Is (err , io .EOF ) {
285- break
286- }
287- if err != nil {
288- return fmt .Errorf ("tarReader.Next(): %w" , err )
289- }
290-
291- switch header .Typeflag {
292- case tar .TypeDir :
293- dir := filepath .Join (destDir , header .Name )
294- if err := os .Mkdir (dir , 0755 ); err != nil {
295- return fmt .Errorf ("os.Mkdir(%q): %w" , dir , err )
296- }
297-
298- case tar .TypeReg :
299- name := filepath .Join (destDir , header .Name )
300- if err := copyFile (tarReader , name ); err != nil {
301- return fmt .Errorf ("extracting %q: %w" , header .Name , err )
302- }
303-
304- default :
305- logger .Warningf ("unsupported tar type: %v" , header .Typeflag )
306- }
274+ if err := tar .Untar (archiveFH , destDir ); err != nil {
275+ return fmt .Errorf ("Untar(%q, %q): %w" , archivePath , destDir , err )
307276 }
308277
309278 return nil
0 commit comments