Improve package info parsing

This commit is contained in:
2025-09-29 10:34:47 +03:00
parent 93921d4093
commit 6f124e0586
+19 -25
View File
@@ -27,8 +27,8 @@ type BPMPackage struct {
type PackageInfo struct { type PackageInfo struct {
Name string `yaml:"name"` Name string `yaml:"name"`
Description string `yaml:"description"` Description string `yaml:"description,omitempty"`
Version string `yaml:"version"` Version string `yaml:"version,omitempty"`
Revision int `yaml:"revision,omitempty"` Revision int `yaml:"revision,omitempty"`
Url string `yaml:"url,omitempty"` Url string `yaml:"url,omitempty"`
License string `yaml:"license,omitempty"` License string `yaml:"license,omitempty"`
@@ -37,8 +37,8 @@ type PackageInfo struct {
Type string `yaml:"type,omitempty"` Type string `yaml:"type,omitempty"`
Keep []string `yaml:"keep,omitempty"` Keep []string `yaml:"keep,omitempty"`
Depends []string `yaml:"depends,omitempty"` Depends []string `yaml:"depends,omitempty"`
MakeDepends []string `yaml:"make_depends,omitempty"`
OptionalDepends []string `yaml:"optional_depends,omitempty"` OptionalDepends []string `yaml:"optional_depends,omitempty"`
MakeDepends []string `yaml:"make_depends,omitempty"`
Conflicts []string `yaml:"conflicts,omitempty"` Conflicts []string `yaml:"conflicts,omitempty"`
Replaces []string `yaml:"replaces,omitempty"` Replaces []string `yaml:"replaces,omitempty"`
Provides []string `yaml:"provides,omitempty"` Provides []string `yaml:"provides,omitempty"`
@@ -48,13 +48,13 @@ type PackageInfo struct {
type PackageDownload struct { type PackageDownload struct {
Url string `yaml:"url"` Url string `yaml:"url"`
Type string `yaml:"type"` Type string `yaml:"type,omitempty"`
NoExtract bool `yaml:"no_extract"` NoExtract bool `yaml:"no_extract,omitempty"`
ExtractToBPMSource bool `yaml:"extract_to_bpm_source"` ExtractToBPMSource bool `yaml:"extract_to_bpm_source,omitempty"`
ExtractStripComponents int `yaml:"extract_strip_components"` ExtractStripComponents int `yaml:"extract_strip_components,omitempty"`
GitBranch string `yaml:"git_branch"` GitBranch string `yaml:"git_branch,omitempty"`
Filepath string `yaml:"filepath,omitempty"` Filepath string `yaml:"filepath,omitempty,omitempty"`
Checksum string `yaml:"checksum"` Checksum string `yaml:"checksum,omitempty"`
} }
type PackageFileEntry struct { type PackageFileEntry struct {
@@ -418,15 +418,8 @@ func executePackageScript(pkg, rootDir string, verbose bool, packageScript strin
func ReadPackageInfo(contents string) (*PackageInfo, error) { func ReadPackageInfo(contents string) (*PackageInfo, error) {
pkgInfo := &PackageInfo{ pkgInfo := &PackageInfo{
Name: "",
Description: "",
Version: "",
Revision: 1, Revision: 1,
Url: "",
License: "",
Arch: "",
OutputArch: GetArch(), OutputArch: GetArch(),
Type: "",
Keep: make([]string, 0), Keep: make([]string, 0),
Depends: make([]string, 0), Depends: make([]string, 0),
MakeDepends: make([]string, 0), MakeDepends: make([]string, 0),
@@ -469,28 +462,29 @@ func ReadPackageInfo(contents string) (*PackageInfo, error) {
return nil, fmt.Errorf("invalid split package name: %s", splitPkg.Name) return nil, fmt.Errorf("invalid split package name: %s", splitPkg.Name)
} }
// Turn split package into json data // Turn split package into yaml data
splitPkgJson, err := yaml.Marshal(splitPkg) splitPkgYaml, err := yaml.Marshal(splitPkg)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Clone all main package fields onto split package // Clone all main package fields onto split package
pkgInfoClone := *pkgInfo *splitPkg = *pkgInfo
pkgInfo.SplitPackages[i] = &pkgInfoClone
// Set split package field of split package to nil // Set split package field of split package to nil
pkgInfo.SplitPackages[i].SplitPackages = nil splitPkg.SplitPackages = nil
// Unmarshal json data back to struct // Unmarshal json data back to struct
err = yaml.Unmarshal(splitPkgJson, &pkgInfo.SplitPackages[i]) err = yaml.Unmarshal(splitPkgYaml, splitPkg)
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Force set split package version, revision // Force set split package version, revision
pkgInfo.SplitPackages[i].Version = pkgInfo.Version splitPkg.Version = pkgInfo.Version
pkgInfo.SplitPackages[i].Revision = pkgInfo.Revision splitPkg.Revision = pkgInfo.Revision
pkgInfo.SplitPackages[i] = splitPkg
} }
return pkgInfo, nil return pkgInfo, nil