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  }