feat: cataloger for PHP Pecl and PEAR packages (#2604)

Signed-off-by: Laurent Goderre <laurent.goderre@docker.com>
This commit is contained in:
Laurent Goderre
2024-04-02 11:55:56 -04:00
committed by GitHub
parent e0f5b5a787
commit e0233625cb
25 changed files with 2637 additions and 3 deletions
+27
View File
@@ -40,6 +40,22 @@ func newComposerInstalledPackage(pd parsedInstalledData, indexLocation file.Loca
return p
}
func newPeclPackage(pd pkg.PhpPeclEntry, indexLocation file.Location) pkg.Package {
p := pkg.Package{
Name: pd.Name,
Version: pd.Version,
Locations: file.NewLocationSet(indexLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)),
Licenses: pkg.NewLicenseSet(pkg.NewLicensesFromLocation(indexLocation, pd.License...)...),
PURL: packageURLFromPecl(pd.Name, pd.Version),
Language: pkg.PHP,
Type: pkg.PhpPeclPkg,
Metadata: pd,
}
p.SetID()
return p
}
func packageURL(name, version string) string {
var pkgName, vendor string
fields := strings.Split(name, "/")
@@ -65,3 +81,14 @@ func packageURL(name, version string) string {
"")
return pURL.ToString()
}
func packageURLFromPecl(pkgName, version string) string {
pURL := packageurl.NewPackageURL(
"pecl",
"",
pkgName,
version,
nil,
"")
return pURL.ToString()
}