@@ -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