github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/syft/pkg/cataloger/redhat/cataloger.go (about) 1 /* 2 Package redhat provides a concrete DBCataloger implementation relating to packages within the RedHat linux distribution. 3 */ 4 package redhat 5 6 import ( 7 "database/sql" 8 9 "github.com/anchore/syft/syft/pkg" 10 "github.com/anchore/syft/syft/pkg/cataloger/generic" 11 "github.com/lineaje-labs/syft/internal/log" 12 ) 13 14 // NewDBCataloger returns a new RPM DB cataloger object. 15 func NewDBCataloger() pkg.Cataloger { 16 // check if a sqlite driver is available 17 if !isSqliteDriverAvailable() { 18 log.Warnf("sqlite driver is not available, newer RPM databases might not be cataloged") 19 } 20 21 return generic.NewCataloger("rpm-db-cataloger"). 22 WithParserByGlobs(parseRpmDB, pkg.RpmDBGlob). 23 WithParserByGlobs(parseRpmManifest, pkg.RpmManifestGlob) 24 } 25 26 // NewArchiveCataloger returns a new RPM file cataloger object. 27 func NewArchiveCataloger() pkg.Cataloger { 28 return generic.NewCataloger("rpm-archive-cataloger"). 29 WithParserByGlobs(parseRpmArchive, "**/*.rpm") 30 } 31 32 func isSqliteDriverAvailable() bool { 33 _, err := sql.Open("sqlite", ":memory:") 34 return err == nil 35 }