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 }