Documentation
¶
Overview ¶
Package filesystem provides the interface for inventory extraction plugins.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrExtractorMemoryLimitExceeded is returned when an extractor skips a file // due to the extraction process exceeding a configured memory limit. ErrExtractorMemoryLimitExceeded = errors.New("extraction failed due to extractor exceeding the configured memory limit") )
Functions ¶
func Run ¶
Run runs the specified extractors and returns their extraction results, as well as info about whether the plugin runs completed successfully.
Types ¶
type Config ¶
type Config struct {
Extractors []Extractor
ScanRoot string
FS fs.FS
// Optional: Individual files to extract inventory from. If specified, the
// extractors will only look at these files during the filesystem traversal.
// Note that these are not relative to ScanRoot and thus need to be in
// sub-directories of ScanRoot.
FilesToExtract []string
// Optional: Directories that the file system walk should ignore.
// Note that these are not relative to ScanRoot and thus need to be
// sub-directories of ScanRoot.
// TODO(b/279413691): Also skip local paths, e.g. "Skip all .git dirs"
DirsToSkip []string
// Optional: If the regex matches a directory, it will be skipped.
SkipDirRegex *regexp.Regexp
// Optional: stats allows to enter a metric hook. If left nil, no metrics will be recorded.
Stats stats.Collector
// Optional: Whether to read symlinks.
ReadSymlinks bool
// Optional: Limit for visited inodes. If 0, no limit is applied.
MaxInodes int
}
Config stores the config settings for an extraction run.
type Extractor ¶
type Extractor interface {
extractor.Extractor
// FileRequired should return true if the file described by path and mode is
// relevant for the extractor.
// Note that the plugin doesn't traverse the filesystem itself but relies on the core
// library for that.
FileRequired(path string, mode fs.FileMode) bool
// Extract extracts inventory data relevant for the extractor from a given file.
Extract(ctx context.Context, input *ScanInput) ([]*extractor.Inventory, error)
}
Extractor is the filesystem-based inventory extraction plugin, used to extract inventory data from the filesystem such as OS and language packages.
type ScanInput ¶
type ScanInput struct {
// The path of the file to extract, relative to ScanRoot.
Path string
// The root directory where the extraction file walking started from.
ScanRoot string
Info fs.FileInfo
// A reader for accessing contents of the file.
// Note that the file is closed by the core library, not the plugin.
Reader io.Reader
// Stats collector to export stats internally from a plugin.
Stats stats.Collector
}
ScanInput describes one file to extract from.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package internal contains miscellaneous functions and objects useful within Scalibr
|
Package internal contains miscellaneous functions and objects useful within Scalibr |
|
units
Package units provides constants for common units.
|
Package units provides constants for common units. |
|
language
|
|
|
dotnet/packageslockjson
Package packageslockjson extracts packages.lock.json files.
|
Package packageslockjson extracts packages.lock.json files. |
|
golang/gobinary
Package gobinary extracts packages from buildinfo inside go binaries files.
|
Package gobinary extracts packages from buildinfo inside go binaries files. |
|
java/archive
Package archive extracts Java archive files.
|
Package archive extracts Java archive files. |
|
javascript/packagejson
Package packagejson extracts package.json files.
|
Package packagejson extracts package.json files. |
|
javascript/packagelockjson
Package packagelockjson extracts package-lock.json files.
|
Package packagelockjson extracts package-lock.json files. |
|
python/requirements
Package requirements extracts requirements files.
|
Package requirements extracts requirements files. |
|
python/wheelegg
Package wheelegg extracts wheel and egg files.
|
Package wheelegg extracts wheel and egg files. |
|
ruby/gemspec
Package gemspec extracts *.gemspec files.
|
Package gemspec extracts *.gemspec files. |
|
Package list provides a public list of SCALIBR-internal extraction plugins.
|
Package list provides a public list of SCALIBR-internal extraction plugins. |
|
os
|
|
|
apk
Package apk extracts packages from the APK database.
|
Package apk extracts packages from the APK database. |
|
cos
Package cos extracts OS packages from Container Optimized OSes (go/cos).
|
Package cos extracts OS packages from Container Optimized OSes (go/cos). |
|
dpkg
Package dpkg extracts packages from dpkg database.
|
Package dpkg extracts packages from dpkg database. |
|
osrelease
Package osrelease parses the os-release file.
|
Package osrelease parses the os-release file. |
|
rpm
Package rpm extracts packages from rpm database.
|
Package rpm extracts packages from rpm database. |
|
Package osv provides a Wrapper for osv plugins.
|
Package osv provides a Wrapper for osv plugins. |
|
sbom
|
|
|
spdx
Package spdx extracts software dependencies from an SPDX SBOM.
|
Package spdx extracts software dependencies from an SPDX SBOM. |
Click to show internal directories.
Click to hide internal directories.