github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/pkg/cataloger/swift/package.go (about)

     1  package swift
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/anchore/packageurl-go"
     7  	"github.com/anchore/syft/syft/file"
     8  	"github.com/anchore/syft/syft/pkg"
     9  )
    10  
    11  func newSwiftPackageManagerPackage(name, version, sourceURL, revision string, locations ...file.Location) pkg.Package {
    12  	p := pkg.Package{
    13  		Name:      name,
    14  		Version:   version,
    15  		PURL:      swiftPackageManagerPackageURL(name, version, sourceURL),
    16  		Locations: file.NewLocationSet(locations...),
    17  		Type:      pkg.SwiftPkg,
    18  		Language:  pkg.Swift,
    19  		Metadata: pkg.SwiftPackageManagerResolvedEntry{
    20  			Revision: revision,
    21  		},
    22  	}
    23  
    24  	p.SetID()
    25  
    26  	return p
    27  }
    28  
    29  func newCocoaPodsPackage(name, version, hash string, locations ...file.Location) pkg.Package {
    30  	p := pkg.Package{
    31  		Name:      name,
    32  		Version:   version,
    33  		PURL:      cocoaPodsPackageURL(name, version),
    34  		Locations: file.NewLocationSet(locations...),
    35  		Type:      pkg.CocoapodsPkg,
    36  		Language:  pkg.Swift,
    37  		Metadata: pkg.CocoaPodfileLockEntry{
    38  			Checksum: hash,
    39  		},
    40  	}
    41  
    42  	p.SetID()
    43  
    44  	return p
    45  }
    46  
    47  func cocoaPodsPackageURL(name, version string) string {
    48  	var qualifiers packageurl.Qualifiers
    49  
    50  	return packageurl.NewPackageURL(
    51  		packageurl.TypeCocoapods,
    52  		"",
    53  		name,
    54  		version,
    55  		qualifiers,
    56  		"",
    57  	).ToString()
    58  }
    59  
    60  func swiftPackageManagerPackageURL(name, version, sourceURL string) string {
    61  	var qualifiers packageurl.Qualifiers
    62  
    63  	return packageurl.NewPackageURL(
    64  		packageurl.TypeSwift,
    65  		strings.Replace(sourceURL, "https://", "", 1),
    66  		name,
    67  		version,
    68  		qualifiers,
    69  		"",
    70  	).ToString()
    71  }