github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/ruby/package.go (about) 1 package ruby 2 3 import ( 4 "github.com/anchore/packageurl-go" 5 "github.com/anchore/syft/syft/file" 6 "github.com/anchore/syft/syft/pkg" 7 ) 8 9 func newGemfileLockPackage(name, version string, locations ...file.Location) pkg.Package { 10 p := pkg.Package{ 11 Name: name, 12 Version: version, 13 PURL: packageURL(name, version), 14 Locations: file.NewLocationSet(locations...), 15 Language: pkg.Ruby, 16 Type: pkg.GemPkg, 17 } 18 19 p.SetID() 20 21 return p 22 } 23 24 func newGemspecPackage(m gemData, gemSpecLocation file.Location) pkg.Package { 25 p := pkg.Package{ 26 Name: m.Name, 27 Version: m.Version, 28 Locations: file.NewLocationSet(gemSpecLocation.WithAnnotation(pkg.EvidenceAnnotationKey, pkg.PrimaryEvidenceAnnotation)), 29 Licenses: pkg.NewLicenseSet(pkg.NewLicensesFromLocation(gemSpecLocation, m.Licenses...)...), 30 PURL: packageURL(m.Name, m.Version), 31 Language: pkg.Ruby, 32 Type: pkg.GemPkg, 33 MetadataType: pkg.GemMetadataType, 34 Metadata: m.GemMetadata, 35 } 36 37 p.SetID() 38 39 return p 40 } 41 42 func packageURL(name, version string) string { 43 var qualifiers packageurl.Qualifiers 44 45 return packageurl.NewPackageURL( 46 packageurl.TypeGem, 47 "", 48 name, 49 version, 50 qualifiers, 51 "", 52 ).ToString() 53 }