github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/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  		MetadataType: pkg.SwiftPackageManagerMetadataType,
    20  		Metadata: pkg.SwiftPackageManagerMetadata{
    21  			Revision: revision,
    22  		},
    23  	}
    24  
    25  	p.SetID()
    26  
    27  	return p
    28  }
    29  
    30  func newCocoaPodsPackage(name, version, hash string, locations ...file.Location) pkg.Package {
    31  	p := pkg.Package{
    32  		Name:         name,
    33  		Version:      version,
    34  		PURL:         cocoaPodsPackageURL(name, version),
    35  		Locations:    file.NewLocationSet(locations...),
    36  		Type:         pkg.CocoapodsPkg,
    37  		Language:     pkg.Swift,
    38  		MetadataType: pkg.CocoapodsMetadataType,
    39  		Metadata: pkg.CocoapodsMetadata{
    40  			Checksum: hash,
    41  		},
    42  	}
    43  
    44  	p.SetID()
    45  
    46  	return p
    47  }
    48  
    49  func cocoaPodsPackageURL(name, version string) string {
    50  	var qualifiers packageurl.Qualifiers
    51  
    52  	return packageurl.NewPackageURL(
    53  		packageurl.TypeCocoapods,
    54  		"",
    55  		name,
    56  		version,
    57  		qualifiers,
    58  		"",
    59  	).ToString()
    60  }
    61  
    62  func swiftPackageManagerPackageURL(name, version, sourceURL string) string {
    63  	var qualifiers packageurl.Qualifiers
    64  
    65  	return packageurl.NewPackageURL(
    66  		packageurl.TypeSwift,
    67  		strings.Replace(sourceURL, "https://", "", 1),
    68  		name,
    69  		version,
    70  		qualifiers,
    71  		"",
    72  	).ToString()
    73  }