diff --git a/syft/pkg/cataloger/binary/cataloger_test.go b/syft/pkg/cataloger/binary/cataloger_test.go index 26992889a..1e5870c2f 100644 --- a/syft/pkg/cataloger/binary/cataloger_test.go +++ b/syft/pkg/cataloger/binary/cataloger_test.go @@ -870,6 +870,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("gcc-binary"), }, }, + { + logicalFixture: "wp-cli/2.9.0/linux-amd64", + expected: pkg.Package{ + Name: "wp-cli", + Version: "2.9.0", + Type: "binary", + PURL: "pkg:generic/wp-cli@2.9.0", + Locations: locations("wp"), + Metadata: metadata("wordpress-cli-binary"), + }, + }, } for _, test := range tests { diff --git a/syft/pkg/cataloger/binary/default_classifiers.go b/syft/pkg/cataloger/binary/default_classifiers.go index c0ef9de6b..ca4992919 100644 --- a/syft/pkg/cataloger/binary/default_classifiers.go +++ b/syft/pkg/cataloger/binary/default_classifiers.go @@ -403,6 +403,17 @@ func DefaultClassifiers() []Classifier { PURL: mustPURL("pkg:generic/gcc@version"), CPEs: singleCPE("cpe:2.3:a:gnu:gcc:*:*:*:*:*:*:*:*"), }, + { + Class: "wordpress-cli-binary", + FileGlob: "**/wp", + EvidenceMatcher: FileContentsVersionMatcher( + // wp-cli/wp-cli 2.9.0' + `(?m)wp-cli/wp-cli (?P[0-9]+\.[0-9]+\.[0-9]+)`, + ), + Package: "wp-cli", + PURL: mustPURL("pkg:generic/wp-cli@version"), + CPEs: singleCPE("cpe:2.3:a:wp-cli:wp-cli:*:*:*:*:*:*:*:*"), + }, } } diff --git a/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/wp-cli-2.9.0/wp b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/wp-cli-2.9.0/wp new file mode 100755 index 000000000..eefaec4d8 Binary files /dev/null and b/syft/pkg/cataloger/binary/test-fixtures/classifiers/positive/wp-cli-2.9.0/wp differ