mirror of
https://github.com/anchore/syft.git
synced 2026-10-31 22:46:36 +01:00
* Closes #1911 Wordpress cataloger Signed-off-by: disc <a.hacicheant@gmail.com> * Fixed a few unit tests and static analizer notices Signed-off-by: disc <a.hacicheant@gmail.com> * Updated `README.md` Signed-off-by: disc <a.hacicheant@gmail.com> * Fixed `golangci-lint` notices Added integration test for `wordpress-plugin` Signed-off-by: disc <a.hacicheant@gmail.com> * Fixed `gosimports` notices Signed-off-by: disc <a.hacicheant@gmail.com> * Updated `json schema` version Signed-off-by: disc <a.hacicheant@gmail.com> * Fixed CLI tests, increased expected package count Signed-off-by: disc <a.hacicheant@gmail.com> * Read first 4Kb of a plugins file's content Signed-off-by: disc <a.hacicheant@gmail.com> * replace JSON schema version Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * change wording on source info for wordpress packages Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * Minor changes after a huge refactoring Signed-off-by: disc <a.hacicheant@gmail.com> * Removed unused files Signed-off-by: disc <a.hacicheant@gmail.com> * Updated schema Signed-off-by: disc <a.hacicheant@gmail.com> * Fixed integration tests Signed-off-by: disc <a.hacicheant@gmail.com> * fix integration tests Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> * Renamed `metadata.Name` to `metadata.PluginInstallDirectory` Signed-off-by: disc <a.hacicheant@gmail.com> * rename fields to be compliant with json conventions Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> --------- Signed-off-by: disc <a.hacicheant@gmail.com> Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com> Co-authored-by: Alex Goodman <wagoodman@users.noreply.github.com>
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package cpegenerate
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/anchore/syft/internal"
|
|
"github.com/anchore/syft/syft/pkg"
|
|
)
|
|
|
|
var (
|
|
vendorFromURLRegexp = regexp.MustCompile(`^https?://(www.)?(?P<vendor>.+)\.\w/?`)
|
|
)
|
|
|
|
func candidateVendorsForWordpressPlugin(p pkg.Package) fieldCandidateSet {
|
|
metadata, ok := p.Metadata.(pkg.WordpressPluginEntry)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
vendors := newFieldCandidateSet()
|
|
|
|
if metadata.AuthorURI != "" {
|
|
matchMap := internal.MatchNamedCaptureGroups(vendorFromURLRegexp, metadata.AuthorURI)
|
|
if vendor, ok := matchMap["vendor"]; ok && vendor != "" {
|
|
vendors.addValue(vendor)
|
|
}
|
|
} else {
|
|
// add plugin_name + _project as a vendor if no Author URI found
|
|
vendors.addValue(fmt.Sprintf("%s_project", normalizeWordpressPluginName(p.Name)))
|
|
}
|
|
|
|
return vendors
|
|
}
|
|
|
|
func candidateProductsForWordpressPlugin(p pkg.Package) fieldCandidateSet {
|
|
metadata, ok := p.Metadata.(pkg.WordpressPluginEntry)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
products := newFieldCandidateSet()
|
|
|
|
products.addValue(normalizeWordpressPluginName(p.Name))
|
|
products.addValue(normalizeWordpressPluginName(metadata.PluginInstallDirectory))
|
|
|
|
return products
|
|
}
|
|
|
|
func normalizeWordpressPluginName(name string) string {
|
|
name = strings.TrimSpace(strings.ToLower(name))
|
|
for _, value := range []string{" "} {
|
|
name = strings.ReplaceAll(name, value, "_")
|
|
}
|
|
return name
|
|
}
|