github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/java/cataloger.go (about)

     1  /*
     2  Package java provides a concrete Cataloger implementation for Java archives (jar, war, ear, par, sar, jpi, hpi, and native-image formats).
     3  */
     4  package java
     5  
     6  import (
     7  	"github.com/anchore/syft/syft/pkg/cataloger/generic"
     8  )
     9  
    10  // NewJavaCataloger returns a new Java archive cataloger object.
    11  func NewJavaCataloger(cfg Config) *generic.Cataloger {
    12  	c := generic.NewCataloger("java-cataloger").
    13  		WithParserByGlobs(parseJavaArchive, archiveFormatGlobs...)
    14  
    15  	if cfg.SearchIndexedArchives {
    16  		// java archives wrapped within zip files
    17  		c.WithParserByGlobs(parseZipWrappedJavaArchive, genericZipGlobs...)
    18  	}
    19  
    20  	if cfg.SearchUnindexedArchives {
    21  		// java archives wrapped within tar files
    22  		c.WithParserByGlobs(parseTarWrappedJavaArchive, genericTarGlobs...)
    23  	}
    24  	return c
    25  }
    26  
    27  // NewJavaPomCataloger returns a cataloger capable of parsing
    28  // dependencies from a pom.xml file.
    29  // Pom files list dependencies that maybe not be locally installed yet.
    30  func NewJavaPomCataloger() *generic.Cataloger {
    31  	return generic.NewCataloger("java-pom-cataloger").
    32  		WithParserByGlobs(parserPomXML, "**/pom.xml")
    33  }
    34  
    35  // NewJavaGradleLockfileCataloger returns a cataloger capable of parsing
    36  // dependencies from a gradle.lockfile file.
    37  // older versions of lockfiles aren't supported yet
    38  func NewJavaGradleLockfileCataloger() *generic.Cataloger {
    39  	return generic.NewCataloger("java-gradle-lockfile-cataloger").
    40  		WithParserByGlobs(parseGradleLockfile, gradleLockfileGlob)
    41  }