diff --git a/internal/utils/compress.go b/internal/utils/compress.go index 4d560cb5..252235fe 100644 --- a/internal/utils/compress.go +++ b/internal/utils/compress.go @@ -74,7 +74,7 @@ func CreateTarGzArchive(path string) (file string, err error) { if fInfo.IsDir() { // write header of the directory - header, err := tar.FileInfoHeader(fInfo, fInfo.Name()) + header, err := tar.FileInfoHeader(fInfo, path) if err != nil { return "", err } @@ -108,13 +108,15 @@ func CreateTarGzArchive(path string) (file string, err error) { } func copyToTarGz(path string, tw *tar.Writer, info fs.FileInfo) error { - header, err := tar.FileInfoHeader(info, info.Name()) - if err != nil { - return err + header := &tar.Header{ + Name: path, + Size: info.Size(), + Mode: int64(info.Mode()), + Typeflag: tar.TypeReg, } // write the header - if err = tw.WriteHeader(header); err != nil { + if err := tw.WriteHeader(header); err != nil { return err } diff --git a/internal/utils/extract.go b/internal/utils/extract.go index d753f83d..fd4df65f 100644 --- a/internal/utils/extract.go +++ b/internal/utils/extract.go @@ -105,3 +105,26 @@ func stripComponents(headerName string, stripComponents int) string { } return filepath.Clean(strings.Join(names[stripComponents:], "/")) } + +func listHeaders(gzipStream io.Reader) { + uncompressedStream, err := gzip.NewReader(gzipStream) + if err != nil { + return + } + + tarReader := tar.NewReader(uncompressedStream) + + for { + header, err := tarReader.Next() + + if errors.Is(err, io.EOF) { + break + } + + if err != nil { + return + } + + fmt.Println(header.Name) + } +}