github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/internal/task/package_tasks.go (about) 1 package task 2 3 import ( 4 "github.com/anchore/syft/syft/cataloging/pkgcataloging" 5 "github.com/anchore/syft/syft/pkg" 6 "github.com/anchore/syft/syft/pkg/cataloger/alpine" 7 "github.com/anchore/syft/syft/pkg/cataloger/arch" 8 "github.com/anchore/syft/syft/pkg/cataloger/binary" 9 "github.com/anchore/syft/syft/pkg/cataloger/cpp" 10 "github.com/anchore/syft/syft/pkg/cataloger/dart" 11 "github.com/anchore/syft/syft/pkg/cataloger/debian" 12 "github.com/anchore/syft/syft/pkg/cataloger/dotnet" 13 "github.com/anchore/syft/syft/pkg/cataloger/elixir" 14 "github.com/anchore/syft/syft/pkg/cataloger/erlang" 15 "github.com/anchore/syft/syft/pkg/cataloger/gentoo" 16 "github.com/anchore/syft/syft/pkg/cataloger/githubactions" 17 "github.com/anchore/syft/syft/pkg/cataloger/golang" 18 "github.com/anchore/syft/syft/pkg/cataloger/haskell" 19 "github.com/anchore/syft/syft/pkg/cataloger/java" 20 "github.com/anchore/syft/syft/pkg/cataloger/javascript" 21 "github.com/anchore/syft/syft/pkg/cataloger/kernel" 22 "github.com/anchore/syft/syft/pkg/cataloger/nix" 23 "github.com/anchore/syft/syft/pkg/cataloger/php" 24 "github.com/anchore/syft/syft/pkg/cataloger/python" 25 "github.com/anchore/syft/syft/pkg/cataloger/r" 26 "github.com/anchore/syft/syft/pkg/cataloger/redhat" 27 "github.com/anchore/syft/syft/pkg/cataloger/ruby" 28 "github.com/anchore/syft/syft/pkg/cataloger/rust" 29 sbomCataloger "github.com/anchore/syft/syft/pkg/cataloger/sbom" 30 "github.com/anchore/syft/syft/pkg/cataloger/swift" 31 "github.com/anchore/syft/syft/pkg/cataloger/wordpress" 32 ) 33 34 //nolint:funlen 35 func DefaultPackageTaskFactories() PackageTaskFactories { 36 return []packageTaskFactory{ 37 // OS package installed catalogers /////////////////////////////////////////////////////////////////////////// 38 newSimplePackageTaskFactory(arch.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "alpm", "archlinux"), 39 newSimplePackageTaskFactory(alpine.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "apk", "alpine"), 40 newSimplePackageTaskFactory(debian.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "dpkg", "debian"), 41 newSimplePackageTaskFactory(gentoo.NewPortageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "portage", "gentoo"), 42 newSimplePackageTaskFactory(redhat.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "rpm", "redhat"), 43 44 // OS package declared catalogers /////////////////////////////////////////////////////////////////////////// 45 newSimplePackageTaskFactory(redhat.NewArchiveCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.OSTag, "linux", "rpm", "redhat"), 46 47 // language-specific package installed catalogers /////////////////////////////////////////////////////////////////////////// 48 newSimplePackageTaskFactory(cpp.NewConanInfoCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "cpp", "conan"), 49 newSimplePackageTaskFactory(javascript.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "javascript", "node"), 50 newSimplePackageTaskFactory(php.NewComposerInstalledCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "php", "composer"), 51 newSimplePackageTaskFactory(r.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "r"), 52 newSimplePackageTaskFactory(ruby.NewInstalledGemSpecCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "ruby", "gem", "gemspec"), 53 newSimplePackageTaskFactory(rust.NewAuditBinaryCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "rust", "binary"), 54 55 // language-specific package declared catalogers /////////////////////////////////////////////////////////////////////////// 56 newSimplePackageTaskFactory(cpp.NewConanCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "cpp", "conan"), 57 newSimplePackageTaskFactory(dart.NewPubspecLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dart"), 58 newSimplePackageTaskFactory(dotnet.NewDotnetDepsCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dotnet", "c#"), 59 newSimplePackageTaskFactory(elixir.NewMixLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "elixir"), 60 newSimplePackageTaskFactory(erlang.NewRebarLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "erlang"), 61 newSimplePackageTaskFactory(erlang.NewOTPCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "erlang", "otp"), 62 newSimplePackageTaskFactory(haskell.NewHackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "haskell", "hackage", "cabal"), 63 newPackageTaskFactory( 64 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 65 return golang.NewGoModuleFileCataloger(cfg.PackagesConfig.Golang) 66 }, 67 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "go", "golang", "gomod", 68 ), 69 newSimplePackageTaskFactory(java.NewGradleLockfileCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "java", "gradle"), 70 newPackageTaskFactory( 71 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 72 return java.NewPomCataloger(cfg.PackagesConfig.JavaArchive) 73 }, 74 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "java", "maven", 75 ), 76 newPackageTaskFactory( 77 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 78 return javascript.NewLockCataloger(cfg.PackagesConfig.JavaScript) 79 }, 80 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "javascript", "node", "npm", 81 ), 82 newSimplePackageTaskFactory(php.NewComposerLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "php", "composer"), 83 newSimplePackageTaskFactory(php.NewPeclCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, pkgcataloging.ImageTag, "php", "pecl"), 84 newPackageTaskFactory( 85 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 86 return python.NewPackageCataloger(cfg.PackagesConfig.Python) 87 }, 88 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "python", 89 ), 90 newSimplePackageTaskFactory(ruby.NewGemFileLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ruby", "gem"), 91 newSimplePackageTaskFactory(ruby.NewGemSpecCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ruby", "gem", "gemspec"), 92 newSimplePackageTaskFactory(rust.NewCargoLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "rust", "cargo"), 93 newSimplePackageTaskFactory(swift.NewCocoapodsCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "cocoapods"), 94 newSimplePackageTaskFactory(swift.NewSwiftPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "spm"), 95 96 // language-specific package for both image and directory scans (but not necessarily declared) //////////////////////////////////////// 97 newSimplePackageTaskFactory(dotnet.NewDotnetPortableExecutableCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "dotnet", "c#", "binary"), 98 newSimplePackageTaskFactory(python.NewInstalledPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "python"), 99 newPackageTaskFactory( 100 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 101 return golang.NewGoModuleBinaryCataloger(cfg.PackagesConfig.Golang) 102 }, 103 pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "go", "golang", "gomod", "binary", 104 ), 105 newPackageTaskFactory( 106 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 107 return java.NewArchiveCataloger(cfg.PackagesConfig.JavaArchive) 108 }, 109 pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "java", "maven", 110 ), 111 newSimplePackageTaskFactory(java.NewNativeImageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "java"), 112 newSimplePackageTaskFactory(nix.NewStoreCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "nix"), 113 114 // other package catalogers /////////////////////////////////////////////////////////////////////////// 115 newPackageTaskFactory( 116 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 117 return binary.NewClassifierCataloger(cfg.PackagesConfig.Binary) 118 }, 119 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", 120 ), 121 newSimplePackageTaskFactory(binary.NewELFPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", "elf-package"), 122 newSimplePackageTaskFactory(githubactions.NewActionUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"), 123 newSimplePackageTaskFactory(githubactions.NewWorkflowUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"), 124 newPackageTaskFactory( 125 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 126 return kernel.NewLinuxKernelCataloger(cfg.PackagesConfig.LinuxKernel) 127 }, 128 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "linux", "kernel", 129 ), 130 newSimplePackageTaskFactory(sbomCataloger.NewCataloger, "sbom"), // note: not evidence of installed packages 131 newSimplePackageTaskFactory(wordpress.NewWordpressPluginCataloger, pkgcataloging.DirectoryTag, pkgcataloging.ImageTag, "wordpress"), 132 } 133 }