mirror of
https://github.com/EnumeratedDev/bpm-utils.git
synced 2026-09-16 11:06:11 +00:00
Fix installed size being wrong
This commit is contained in:
@@ -58,31 +58,44 @@ func GenerateDatabase(path string) error {
|
||||
// Initialize database entry
|
||||
entry := BPMDatabaseEntry{}
|
||||
entry.DownloadSize = info.Size()
|
||||
entry.InstalledSize = 0
|
||||
entry.Filepath, err = filepath.Rel(path, packagePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Get package installed size
|
||||
cmd := exec.Command("tar", "-t", "-v", "-f", packagePath, "files.tar.gz")
|
||||
output, err := cmd.Output()
|
||||
if err == nil {
|
||||
entry.InstalledSize, err = strconv.ParseInt(strings.Fields(string(output))[2], 10, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if err.(*exec.ExitError).ExitCode() == 2 {
|
||||
entry.InstalledSize = 0
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
|
||||
// Get package info
|
||||
entry.PackageInfo, err = ReadPacakgeInfoFromTarball(packagePath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Get package installed size
|
||||
if entry.PackageInfo.Type == "binary" {
|
||||
cmd := exec.Command("tar", "xf", packagePath, "pkg.files", "-O")
|
||||
output, err := cmd.Output()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, line := range strings.Split(string(output), "\n") {
|
||||
line = strings.TrimSpace(line)
|
||||
if line == "" {
|
||||
continue
|
||||
}
|
||||
stringEntry := strings.Split(line, " ")
|
||||
if len(stringEntry) < 5 {
|
||||
return fmt.Errorf("pkg.files is not formatted correctly")
|
||||
}
|
||||
size, err := strconv.ParseInt(stringEntry[len(stringEntry)-1], 10, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
entry.InstalledSize += size
|
||||
}
|
||||
}
|
||||
|
||||
// Add entry to database
|
||||
if _, ok := database.Entries[entry.PackageInfo.Name]; ok {
|
||||
return fmt.Errorf("package (%s) has already been added to the database", entry.PackageInfo.Name)
|
||||
|
||||
Reference in New Issue
Block a user