github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/gosbom/pkg/cataloger/haskell/package.go (about)

     1  package haskell
     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 newPackage(name, version string, m *pkg.HackageMetadata, locations ...file.Location) pkg.Package {
    11  	p := pkg.Package{
    12  		Name:      name,
    13  		Version:   version,
    14  		Locations: file.NewLocationSet(locations...),
    15  		PURL:      packageURL(name, version),
    16  		Language:  pkg.Haskell,
    17  		Type:      pkg.HackagePkg,
    18  	}
    19  
    20  	if m != nil {
    21  		p.MetadataType = pkg.HackageMetadataType
    22  		p.Metadata = *m
    23  	}
    24  
    25  	p.SetID()
    26  
    27  	return p
    28  }
    29  
    30  func packageURL(name, version string) string {
    31  	var qualifiers packageurl.Qualifiers
    32  
    33  	return packageurl.NewPackageURL(
    34  		packageurl.TypeHackage,
    35  		"",
    36  		name,
    37  		version,
    38  		qualifiers,
    39  		"",
    40  	).ToString()
    41  }