Skip to content

Commit

Permalink
add lazy loading/caching back
Browse files Browse the repository at this point in the history
Signed-off-by: everettraven <everettraven@gmail.com>
  • Loading branch information
everettraven committed Feb 2, 2024
1 parent e37bb1c commit 94fe3df
Showing 1 changed file with 23 additions and 6 deletions.
29 changes: 23 additions & 6 deletions internal/catalogmetadata/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,18 @@ type PackageRequired struct {

type Bundle struct {
declcfg.Bundle
Deprecation *declcfg.DeprecationEntry
Catalog string
Deprecation *declcfg.DeprecationEntry
Catalog string
version *bsemver.Version
requiredPackages []PackageRequired
mediaType string
}

func (b *Bundle) Version() (*bsemver.Version, error) {
if b.version != nil {
return b.version, nil
}

pkg, err := loadOneFromProps[property.Package](b, property.TypePackage, true)
if err != nil {
return nil, err
Expand All @@ -65,10 +72,15 @@ func (b *Bundle) Version() (*bsemver.Version, error) {
if err != nil {
return nil, fmt.Errorf("could not parse semver %q for bundle '%s': %s", pkg.Version, b.Name, err)
}
return &semVer, nil
b.version = &semVer
return b.version, nil
}

func (b *Bundle) RequiredPackages() ([]PackageRequired, error) {
if len(b.requiredPackages) > 0 {
return b.requiredPackages, nil
}

requiredPackages, err := loadFromProps[PackageRequired](b, property.TypePackageRequired, false)
if err != nil {
return nil, fmt.Errorf("error determining bundle required packages for bundle %q: %s", b.Name, err)
Expand All @@ -85,16 +97,21 @@ func (b *Bundle) RequiredPackages() ([]PackageRequired, error) {
}
requiredPackages[i].SemverRange = semverRange
}
return requiredPackages, nil
b.requiredPackages = requiredPackages
return b.requiredPackages, nil
}

func (b *Bundle) MediaType() (string, error) {
if b.mediaType != "" {
return b.mediaType, nil
}

mediaType, err := loadOneFromProps[string](b, PropertyBundleMediaType, false)
if err != nil {
return "", fmt.Errorf("error determining bundle mediatype for bundle %q: %s", b.Name, err)
}

return mediaType, nil
b.mediaType = mediaType
return b.mediaType, nil
}

func (b *Bundle) propertiesByType(propType string) []*property.Property {
Expand Down

0 comments on commit 94fe3df

Please sign in to comment.