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