From 4ff4a74fa3f7d32d7fe6ad2fdecb88098ab13c08 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 29 Sep 2025 10:35:54 +0300 Subject: [PATCH] Improve package info parsing --- src/bpm-package/main.go | 2 +- src/bpm-utils-shared/database.go | 2 +- src/bpm-utils-shared/package.go | 65 +++++++++++--------------------- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/src/bpm-package/main.go b/src/bpm-package/main.go index fadfee0..e5847ed 100644 --- a/src/bpm-package/main.go +++ b/src/bpm-package/main.go @@ -208,7 +208,7 @@ func compilePackage(archive string) { outputPkgs := make(map[string]string) for _, line := range strings.Split(strings.TrimSpace(string(cmdOutput)), "\n") { // Read generated package info - pkgInfo, err := bpmutilsshared.ReadPacakgeInfo(line) + pkgInfo, err := bpmutilsshared.ReadPacakgeInfoFromTarball(line) if repo := bpmutilsshared.GetRepository(); repo != "" && *moveToBinaryDir { // Remove old package from binary dir diff --git a/src/bpm-utils-shared/database.go b/src/bpm-utils-shared/database.go index 041c15a..a5342f1 100644 --- a/src/bpm-utils-shared/database.go +++ b/src/bpm-utils-shared/database.go @@ -78,7 +78,7 @@ func GenerateDatabase(path string) error { } // Get package info - entry.PackageInfo, err = ReadPacakgeInfo(packagePath) + entry.PackageInfo, err = ReadPacakgeInfoFromTarball(packagePath) if err != nil { return err } diff --git a/src/bpm-utils-shared/package.go b/src/bpm-utils-shared/package.go index 277b6ca..1dcee19 100644 --- a/src/bpm-utils-shared/package.go +++ b/src/bpm-utils-shared/package.go @@ -12,8 +12,8 @@ import ( type PackageInfo struct { Name string `yaml:"name"` - Description string `yaml:"description"` - Version string `yaml:"version"` + Description string `yaml:"description,omitempty"` + Version string `yaml:"version,omitempty"` Revision int `yaml:"revision,omitempty"` Url string `yaml:"url,omitempty"` License string `yaml:"license,omitempty"` @@ -42,24 +42,9 @@ type PackageDownload struct { Checksum string `yaml:"checksum,omitempty"` } -func ReadPacakgeInfo(path string) (*PackageInfo, error) { - // Extract package info using tar - cmd := exec.Command("tar", "-x", "-f", path, "pkg.info", "-O") - output, err := cmd.Output() - if err != nil { - return nil, err - } - +func ReadPackageInfo(data []byte) (*PackageInfo, error) { pkgInfo := &PackageInfo{ - Name: "", - Description: "", - Version: "", Revision: 1, - Url: "", - License: "", - Arch: "", - OutputArch: "", - Type: "", Keep: make([]string, 0), Depends: make([]string, 0), MakeDepends: make([]string, 0), @@ -72,7 +57,23 @@ func ReadPacakgeInfo(path string) (*PackageInfo, error) { } // Unmarshal yaml - err = yaml.Unmarshal(output, pkgInfo) + err := yaml.Unmarshal(data, pkgInfo) + if err != nil { + return nil, err + } + + return pkgInfo, nil +} + +func ReadPacakgeInfoFromTarball(path string) (*PackageInfo, error) { + // Extract package info using tar + cmd := exec.Command("tar", "-x", "-f", path, "pkg.info", "-O") + output, err := cmd.Output() + if err != nil { + return nil, err + } + + pkgInfo, err := ReadPackageInfo(output) if err != nil { return nil, err } @@ -81,35 +82,13 @@ func ReadPacakgeInfo(path string) (*PackageInfo, error) { } func ReadPacakgeInfoFromFile(path string) (*PackageInfo, error) { - // Extract package info using tar + // Read data from file output, err := os.ReadFile(path) if err != nil { return nil, err } - pkgInfo := &PackageInfo{ - Name: "", - Description: "", - Version: "", - Revision: 1, - Url: "", - License: "", - Arch: "", - OutputArch: "", - Type: "", - Keep: make([]string, 0), - Depends: make([]string, 0), - OptionalDepends: make([]string, 0), - MakeDepends: make([]string, 0), - Conflicts: make([]string, 0), - Replaces: make([]string, 0), - Provides: make([]string, 0), - Downloads: make([]PackageDownload, 0), - SplitPackages: make([]*PackageInfo, 0), - } - - // Unmarshal yaml - err = yaml.Unmarshal(output, pkgInfo) + pkgInfo, err := ReadPackageInfo(output) if err != nil { return nil, err }