github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/haskell/package.go (about)

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