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  }