mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 08:23:15 +01:00
* unexport as many types and functions from cataloger packages as possible Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * capture type and signature information in convention test Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * check that we return pkg.Cataloger from constructors Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> --------- Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
47 lines
1.7 KiB
Go
47 lines
1.7 KiB
Go
/*
|
|
Package java provides a concrete Cataloger implementation for packages relating to the Java language ecosystem.
|
|
*/
|
|
package java
|
|
|
|
import (
|
|
"github.com/anchore/syft/syft/pkg"
|
|
"github.com/anchore/syft/syft/pkg/cataloger/generic"
|
|
)
|
|
|
|
// NewArchiveCataloger returns a new Java archive cataloger object for detecting packages with archives (jar, war, ear, par, sar, jpi, hpi, and native-image formats)
|
|
func NewArchiveCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger {
|
|
gap := newGenericArchiveParserAdapter(cfg)
|
|
|
|
c := generic.NewCataloger("java-archive-cataloger").
|
|
WithParserByGlobs(gap.parseJavaArchive, archiveFormatGlobs...)
|
|
|
|
if cfg.IncludeIndexedArchives {
|
|
// java archives wrapped within zip files
|
|
gzp := newGenericZipWrappedJavaArchiveParser(cfg)
|
|
c.WithParserByGlobs(gzp.parseZipWrappedJavaArchive, genericZipGlobs...)
|
|
}
|
|
|
|
if cfg.IncludeUnindexedArchives {
|
|
// java archives wrapped within tar files
|
|
gtp := newGenericTarWrappedJavaArchiveParser(cfg)
|
|
c.WithParserByGlobs(gtp.parseTarWrappedJavaArchive, genericTarGlobs...)
|
|
}
|
|
return c
|
|
}
|
|
|
|
// NewPomCataloger returns a cataloger capable of parsing dependencies from a pom.xml file.
|
|
// Pom files list dependencies that maybe not be locally installed yet.
|
|
func NewPomCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger {
|
|
gap := newGenericArchiveParserAdapter(cfg)
|
|
|
|
return generic.NewCataloger("java-pom-cataloger").
|
|
WithParserByGlobs(gap.parserPomXML, "**/pom.xml")
|
|
}
|
|
|
|
// NewGradleLockfileCataloger returns a cataloger capable of parsing dependencies from a gradle.lockfile file.
|
|
// Note: Older versions of lockfiles aren't supported yet
|
|
func NewGradleLockfileCataloger() pkg.Cataloger {
|
|
return generic.NewCataloger("java-gradle-lockfile-cataloger").
|
|
WithParserByGlobs(parseGradleLockfile, gradleLockfileGlob)
|
|
}
|