github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/php/package.go (about) 1 package php 2 3 import ( 4 "strings" 5 6 "github.com/anchore/packageurl-go" 7 "github.com/anchore/syft/syft/file" 8 "github.com/anchore/syft/syft/pkg" 9 ) 10 11 func newComposerLockPackage(m parsedData, indexLocation file.Location) pkg.Package { 12 p := pkg.Package{ 13 Name: m.Name, 14 Version: m.Version, 15 Locations: file.NewLocationSet(indexLocation), 16 Licenses: pkg.NewLicenseSet(pkg.NewLicensesFromLocation(indexLocation, m.License...)...), 17 PURL: packageURL(m), 18 Language: pkg.PHP, 19 Type: pkg.PhpComposerPkg, 20 MetadataType: pkg.PhpComposerJSONMetadataType, 21 Metadata: m.PhpComposerJSONMetadata, 22 } 23 24 p.SetID() 25 return p 26 } 27 28 func packageURL(m parsedData) string { 29 var name, vendor string 30 fields := strings.Split(m.Name, "/") 31 switch len(fields) { 32 case 0: 33 return "" 34 case 1: 35 name = m.Name 36 case 2: 37 vendor = fields[0] 38 name = fields[1] 39 default: 40 vendor = fields[0] 41 name = strings.Join(fields[1:], "-") 42 } 43 44 pURL := packageurl.NewPackageURL( 45 packageurl.TypeComposer, 46 vendor, 47 name, 48 m.Version, 49 nil, 50 "") 51 return pURL.ToString() 52 }