@@ -17,9 +17,7 @@ limitations under the License.
17
17
package main
18
18
19
19
import (
20
- "archive/tar"
21
20
"bytes"
22
- "compress/gzip"
23
21
"context"
24
22
"errors"
25
23
"fmt"
@@ -31,6 +29,7 @@ import (
31
29
"strings"
32
30
33
31
oci "github.com/fluxcd/pkg/oci/client"
32
+ "github.com/fluxcd/pkg/tar"
34
33
sourcev1 "github.com/fluxcd/source-controller/api/v1beta2"
35
34
"github.com/gonvenience/ytbx"
36
35
"github.com/google/shlex"
@@ -272,38 +271,8 @@ func extractTo(archivePath, destDir string) error {
272
271
return err
273
272
}
274
273
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 )
307
276
}
308
277
309
278
return nil
0 commit comments