github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/syft/format/internal/spdxutil/helpers/source_info.go (about) 1 package helpers 2 3 import ( 4 "strings" 5 6 "github.com/anchore/syft/syft/pkg" 7 ) 8 9 //nolint:funlen 10 func SourceInfo(p pkg.Package) string { 11 answer := "" 12 switch p.Type { 13 case pkg.AlpmPkg: 14 answer = "acquired package info from ALPM DB" 15 case pkg.RpmPkg: 16 answer = "acquired package info from RPM DB" 17 case pkg.ApkPkg: 18 answer = "acquired package info from APK DB" 19 case pkg.DartPubPkg: 20 answer = "acquired package info from pubspec manifest" 21 case pkg.DebPkg: 22 answer = "acquired package info from DPKG DB" 23 case pkg.DotnetPkg: 24 answer = "acquired package info from dotnet project assets file" 25 case pkg.NpmPkg: 26 answer = "acquired package info from installed node module manifest file" 27 case pkg.PythonPkg: 28 answer = "acquired package info from installed python package manifest file" 29 case pkg.JavaPkg, pkg.JenkinsPluginPkg: 30 answer = "acquired package info from installed java archive" 31 case pkg.GemPkg: 32 answer = "acquired package info from installed gem metadata file" 33 case pkg.GoModulePkg: 34 answer = "acquired package info from go module information" 35 case pkg.RustPkg: 36 answer = "acquired package info from rust cargo manifest" 37 case pkg.PhpComposerPkg: 38 answer = "acquired package info from PHP composer manifest" 39 case pkg.PhpPeclPkg: 40 answer = "acquired package info from PHP Pecl manifest" 41 case pkg.CocoapodsPkg: 42 answer = "acquired package info from installed cocoapods manifest file" 43 case pkg.ConanPkg: 44 answer = "acquired package info from conan manifest" 45 case pkg.PortagePkg: 46 answer = "acquired package info from portage DB" 47 case pkg.HackagePkg: 48 answer = "acquired package info from cabal or stack manifest files" 49 case pkg.HexPkg: 50 answer = "acquired package info from rebar3 or mix manifest file" 51 case pkg.ErlangOTPPkg: 52 answer = "acquired package info from ErLang application resource file" 53 case pkg.LinuxKernelPkg: 54 answer = "acquired package info from linux kernel archive" 55 case pkg.LinuxKernelModulePkg: 56 answer = "acquired package info from linux kernel module files" 57 case pkg.NixPkg: 58 answer = "acquired package info from nix store path" 59 case pkg.Rpkg: 60 answer = "acquired package info from R-package DESCRIPTION file" 61 case pkg.SwiftPkg: 62 answer = "acquired package info from resolved Swift package manifest" 63 case pkg.GithubActionPkg, pkg.GithubActionWorkflowPkg: 64 answer = "acquired package info from GitHub Actions workflow file or composite action file" 65 case pkg.WordpressPluginPkg: 66 answer = "acquired package info from found wordpress plugin PHP source files" 67 default: 68 answer = "acquired package info from the following paths" 69 } 70 if p.FoundBy == "sbom-cataloger" { 71 answer = "acquired package info from SBOM" 72 } 73 var paths []string 74 for _, l := range p.Locations.ToSlice() { 75 paths = append(paths, l.RealPath) 76 } 77 78 return answer + ": " + strings.Join(paths, ", ") 79 }