Switch to new BPM file structure #8

Merged
EnumDev merged 11 commits from improve_bpm_structure into master 2024-10-23 06:22:40 +00:00
2 changed files with 21 additions and 16 deletions
Showing only changes of commit ef16fa8195 - Show all commits

View File

@ -7,12 +7,16 @@ import (
"os" "os"
) )
func ReadTarballContent(tarballPath, fileToExtract string) ([]byte, error) { type TarballFileReader struct {
tarReader *tar.Reader
file *os.File
}
func ReadTarballContent(tarballPath, fileToExtract string) (*TarballFileReader, error) {
file, err := os.Open(tarballPath) file, err := os.Open(tarballPath)
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer file.Close()
tr := tar.NewReader(file) tr := tar.NewReader(file)
for { for {
@ -28,11 +32,10 @@ func ReadTarballContent(tarballPath, fileToExtract string) ([]byte, error) {
return nil, errors.New("file to extract must be a regular file") return nil, errors.New("file to extract must be a regular file")
} }
bytes, err := io.ReadAll(tr) return &TarballFileReader{
if err != nil { tarReader: tr,
return nil, err file: file,
} }, nil
return bytes, nil
} }
} }

View File

@ -2,7 +2,6 @@ package utils
import ( import (
"archive/tar" "archive/tar"
"bytes"
"compress/gzip" "compress/gzip"
"errors" "errors"
"fmt" "fmt"
@ -488,18 +487,19 @@ func extractPackage(bpmpkg *BPMPackage, verbose bool, filename, rootDir string)
return err, nil return err, nil
} }
content, err := ReadTarballContent(filename, "files.tar.gz") tarballFile, err := ReadTarballContent(filename, "files.tar.gz")
if err != nil { if err != nil {
return err, nil return err, nil
} }
defer tarballFile.file.Close()
archive, err := gzip.NewReader(bytes.NewReader(content)) archive, err := gzip.NewReader(tarballFile.tarReader)
if err != nil { if err != nil {
return err, nil return err, nil
} }
tr := tar.NewReader(archive) packageFilesReader := tar.NewReader(archive)
for { for {
header, err := tr.Next() header, err := packageFilesReader.Next()
if err == io.EOF { if err == io.EOF {
break break
} }
@ -559,7 +559,7 @@ func extractPackage(bpmpkg *BPMPackage, verbose bool, filename, rootDir string)
if err != nil { if err != nil {
return err, nil return err, nil
} }
if _, err := io.Copy(outFile, tr); err != nil { if _, err := io.Copy(outFile, packageFilesReader); err != nil {
return err, nil return err, nil
} }
if err := os.Chmod(extractFilename, header.FileInfo().Mode()); err != nil { if err := os.Chmod(extractFilename, header.FileInfo().Mode()); err != nil {
@ -1119,12 +1119,14 @@ func InstallPackage(filename, rootDir string, verbose, force, binaryPkgFromSrc,
if err != nil { if err != nil {
return err return err
} }
bs, err := ReadTarballContent(filename, "pkg.files")
tarballFile, err := ReadTarballContent(filename, "pkg.files")
if err != nil { if err != nil {
return err return err
} }
_, err = f.Write(bs) defer tarballFile.file.Close()
err = f.Close()
_, err = io.Copy(f, tarballFile.tarReader)
if err != nil { if err != nil {
return err return err
} }