diff --git a/syft/cataloger/bundler/cataloger.go b/syft/cataloger/bundler/catalogers.go similarity index 62% rename from syft/cataloger/bundler/cataloger.go rename to syft/cataloger/bundler/catalogers.go index dcaced018..ae8554226 100644 --- a/syft/cataloger/bundler/cataloger.go +++ b/syft/cataloger/bundler/catalogers.go @@ -7,19 +7,19 @@ import ( "github.com/anchore/syft/syft/cataloger/common" ) -// NewGemfileLockCataloger returns a new Bundler cataloger object tailored for parsing index-oriented files (e.g. Gemfile.lock). -func NewGemfileLockCataloger() *common.GenericCataloger { +// NewGemFileLockCataloger returns a new Bundler cataloger object tailored for parsing index-oriented files (e.g. Gemfile.lock). +func NewGemFileLockCataloger() *common.GenericCataloger { globParsers := map[string]common.ParserFn{ - "**/Gemfile.lock": parseGemfileLockEntries, + "**/Gemfile.lock": parseGemFileLockEntries, } return common.NewGenericCataloger(nil, globParsers, "ruby-gemfile-cataloger") } -// NewGemspecCataloger returns a new Bundler cataloger object tailored for detecting installations of gems (e.g. Gemspec). -func NewGemspecCataloger() *common.GenericCataloger { +// NewGemSpecCataloger returns a new Bundler cataloger object tailored for detecting installations of gems (e.g. Gemspec). +func NewGemSpecCataloger() *common.GenericCataloger { globParsers := map[string]common.ParserFn{ - "**/specification/*.gemspec": parseGemspecEntries, + "**/specification/*.gemspec": parseGemSpecEntries, } return common.NewGenericCataloger(nil, globParsers, "ruby-gemspec-cataloger") diff --git a/syft/cataloger/bundler/parse_gemfile_lock.go b/syft/cataloger/bundler/parse_gemfile_lock.go index 76e8990e5..28a45eb76 100644 --- a/syft/cataloger/bundler/parse_gemfile_lock.go +++ b/syft/cataloger/bundler/parse_gemfile_lock.go @@ -11,12 +11,12 @@ import ( ) // integrity check -var _ common.ParserFn = parseGemfileLockEntries +var _ common.ParserFn = parseGemFileLockEntries var sectionsOfInterest = internal.NewStringSetFromSlice([]string{"GEM"}) -// parseGemfileLockEntries is a parser function for Gemfile.lock contents, returning all Gems discovered. -func parseGemfileLockEntries(_ string, reader io.Reader) ([]pkg.Package, error) { +// parseGemFileLockEntries is a parser function for Gemfile.lock contents, returning all Gems discovered. +func parseGemFileLockEntries(_ string, reader io.Reader) ([]pkg.Package, error) { pkgs := make([]pkg.Package, 0) scanner := bufio.NewScanner(reader) diff --git a/syft/cataloger/bundler/parse_gemfile_lock_test.go b/syft/cataloger/bundler/parse_gemfile_lock_test.go index 4e3faf7e5..bb0b254d0 100644 --- a/syft/cataloger/bundler/parse_gemfile_lock_test.go +++ b/syft/cataloger/bundler/parse_gemfile_lock_test.go @@ -68,7 +68,7 @@ func TestParseGemfileLockEntries(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseGemfileLockEntries(fixture.Name(), fixture) + actual, err := parseGemFileLockEntries(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse gemfile lock: %+v", err) } diff --git a/syft/cataloger/bundler/parse_gemspec.go b/syft/cataloger/bundler/parse_gemspec.go index 728668899..90ab8766e 100644 --- a/syft/cataloger/bundler/parse_gemspec.go +++ b/syft/cataloger/bundler/parse_gemspec.go @@ -14,7 +14,7 @@ import ( ) // integrity check -var _ common.ParserFn = parseGemfileLockEntries +var _ common.ParserFn = parseGemFileLockEntries // for line in gem.splitlines(): // line = line.strip() @@ -65,7 +65,7 @@ var postProcessors = map[string]listProcessor{ //}, } -func parseGemspecEntries(_ string, reader io.Reader) ([]pkg.Package, error) { +func parseGemSpecEntries(_ string, reader io.Reader) ([]pkg.Package, error) { var pkgs []pkg.Package var fields = make(map[string]interface{}) scanner := bufio.NewScanner(reader) diff --git a/syft/cataloger/bundler/parse_gemspec_test.go b/syft/cataloger/bundler/parse_gemspec_test.go index b792405b3..8889899d2 100644 --- a/syft/cataloger/bundler/parse_gemspec_test.go +++ b/syft/cataloger/bundler/parse_gemspec_test.go @@ -17,7 +17,7 @@ func TestParseGemspec(t *testing.T) { t.Fatalf("failed to open fixture: %+v", err) } - actual, err := parseGemspecEntries(fixture.Name(), fixture) + actual, err := parseGemSpecEntries(fixture.Name(), fixture) if err != nil { t.Fatalf("failed to parse gemspec: %+v", err) } diff --git a/syft/cataloger/cataloger.go b/syft/cataloger/cataloger.go index b4987f236..e366cea0e 100644 --- a/syft/cataloger/cataloger.go +++ b/syft/cataloger/cataloger.go @@ -36,7 +36,7 @@ type Cataloger interface { // ImageCatalogers returns a slice of locally implemented catalogers that are fit for detecting installations of packages. func ImageCatalogers() []Cataloger { return []Cataloger{ - bundler.NewGemspecCataloger(), + bundler.NewGemSpecCataloger(), python.NewPythonCataloger(), // TODO: split and replace me javascript.NewJavascriptCataloger(), // TODO: split and replace me deb.NewDpkgdbCataloger(), @@ -50,7 +50,7 @@ func ImageCatalogers() []Cataloger { // DirectoryCatalogers returns a slice of locally implemented catalogers that are fit for detecting packages from index files (and select installations) func DirectoryCatalogers() []Cataloger { return []Cataloger{ - bundler.NewGemfileLockCataloger(), + bundler.NewGemFileLockCataloger(), python.NewPythonCataloger(), // TODO: split and replace me javascript.NewJavascriptCataloger(), // TODO: split and replace me deb.NewDpkgdbCataloger(), diff --git a/syft/cataloger/common/generic_cataloger.go b/syft/cataloger/common/generic_cataloger.go index 1255f0794..ed314fcae 100644 --- a/syft/cataloger/common/generic_cataloger.go +++ b/syft/cataloger/common/generic_cataloger.go @@ -15,27 +15,27 @@ import ( // GenericCataloger implements the Catalog interface and is responsible for dispatching the proper parser function for // a given path or glob pattern. This is intended to be reusable across many package cataloger types. type GenericCataloger struct { - globParsers map[string]ParserFn - pathParsers map[string]ParserFn - selectedFiles []file.Reference - parsers map[file.Reference]ParserFn - upstreamMatcher string + globParsers map[string]ParserFn + pathParsers map[string]ParserFn + selectedFiles []file.Reference + parsers map[file.Reference]ParserFn + upstreamCataloger string } // NewGenericCataloger if provided path-to-parser-function and glob-to-parser-function lookups creates a GenericCataloger -func NewGenericCataloger(pathParsers map[string]ParserFn, globParsers map[string]ParserFn, upstreamMatcher string) *GenericCataloger { +func NewGenericCataloger(pathParsers map[string]ParserFn, globParsers map[string]ParserFn, upstreamCataloger string) *GenericCataloger { return &GenericCataloger{ - globParsers: globParsers, - pathParsers: pathParsers, - selectedFiles: make([]file.Reference, 0), - parsers: make(map[file.Reference]ParserFn), - upstreamMatcher: upstreamMatcher, + globParsers: globParsers, + pathParsers: pathParsers, + selectedFiles: make([]file.Reference, 0), + parsers: make(map[file.Reference]ParserFn), + upstreamCataloger: upstreamCataloger, } } // Name returns a string that uniquely describes the upstream cataloger that this Generic Cataloger represents. func (a *GenericCataloger) Name() string { - return a.upstreamMatcher + return a.upstreamCataloger } // register pairs a set of file references with a parser function for future cataloging (when the file contents are resolved) @@ -88,19 +88,19 @@ func (a *GenericCataloger) Catalog(contents map[file.Reference]string) ([]pkg.Pa for reference, parser := range a.parsers { content, ok := contents[reference] if !ok { - log.Errorf("cataloger '%s' missing file content: %+v", a.upstreamMatcher, reference) + log.Errorf("cataloger '%s' missing file content: %+v", a.upstreamCataloger, reference) continue } entries, err := parser(string(reference.Path), strings.NewReader(content)) if err != nil { // TODO: should we fail? or only log? - log.Errorf("cataloger '%s' failed to parse entries (reference=%+v): %+v", a.upstreamMatcher, reference, err) + log.Errorf("cataloger '%s' failed to parse entries (reference=%+v): %+v", a.upstreamCataloger, reference, err) continue } for _, entry := range entries { - entry.FoundBy = a.upstreamMatcher + entry.FoundBy = a.upstreamCataloger entry.Source = []file.Reference{reference} packages = append(packages, entry)