github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/snap/cataloger.go (about) 1 /* 2 Package snap provides a concrete Cataloger implementation for snap packages, extracting metadata 3 from different types of snap files (base, kernel, system/gadget, snapd) rather than just scanning 4 the filesystem. 5 */ 6 package snap 7 8 import ( 9 "github.com/anchore/syft/syft/pkg" 10 "github.com/anchore/syft/syft/pkg/cataloger/generic" 11 ) 12 13 const catalogerName = "snap-cataloger" 14 15 // NewCataloger returns a new Snap cataloger object that can parse snap package metadata. 16 func NewCataloger() pkg.Cataloger { 17 return generic.NewCataloger(catalogerName). 18 // Look for snap.yaml to identify snap type and base snap info 19 WithParserByGlobs(parseSnapYaml, "**/meta/snap.yaml"). 20 // Base snaps: dpkg.yaml files containing package manifests 21 WithParserByGlobs(parseBaseDpkgYaml, "**/usr/share/snappy/dpkg.yaml"). 22 // Kernel snaps: changelog files for kernel version info 23 WithParserByGlobs(parseKernelChangelog, "**/doc/linux-modules-*/changelog.Debian.gz"). 24 // System/Gadget snaps: manifest files with primed-stage-packages 25 WithParserByGlobs(parseSystemManifest, "**/snap/manifest.yaml"). 26 // Snapd snaps: snapcraft.yaml files 27 WithParserByGlobs(parseSnapdSnapcraft, "**/snap/snapcraft.yaml") 28 }