Skip to content

Commit b5f77cd

Browse files
committed
flux diff artifact: Use the tar.Untar() convenience function.
Signed-off-by: Florian Forster <[email protected]>
1 parent 4cca0a0 commit b5f77cd

File tree

1 file changed

+3
-34
lines changed

1 file changed

+3
-34
lines changed

cmd/flux/diff_artifact.go

+3-34
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ limitations under the License.
1717
package main
1818

1919
import (
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

Comments
 (0)