mirror of
https://github.com/anchore/syft.git
synced 2026-06-17 09:48:24 +02:00
add purl types to cataloger info cmd (#4984)
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
92ae4d44c5
commit
951fbd454a
@ -60,6 +60,7 @@ type (
|
||||
Packages []detectorPackageInfo `json:"packages,omitempty"`
|
||||
Comment string `json:"comment,omitempty"`
|
||||
PackageTypes []string `json:"package_types,omitempty"`
|
||||
PURLTypes []string `json:"purl_types,omitempty"`
|
||||
JSONSchemaTypes []string `json:"json_schema_types,omitempty"`
|
||||
Capabilities capabilities.CapabilitySet `json:"capabilities,omitempty"`
|
||||
}
|
||||
@ -235,7 +236,7 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
|
||||
// if no parsers, use detectors instead
|
||||
if len(info.Patterns) == 0 {
|
||||
info.Capabilities = cat.Capabilities
|
||||
info.Patterns = convertDetectorsToPatterns(cat.Detectors, cat.PackageTypes, cat.JSONSchemaTypes)
|
||||
info.Patterns = convertDetectorsToPatterns(cat.Detectors, cat.PackageTypes, cat.PURLTypes, cat.JSONSchemaTypes)
|
||||
}
|
||||
|
||||
info.Config = getConfigInfoFromDocument(doc, cat.Config)
|
||||
@ -278,6 +279,7 @@ func convertParsersToPatterns(parsers []capabilities.Parser) []patternInfo {
|
||||
Packages: convertDetectorPackages(parser.Detector.Packages),
|
||||
Comment: parser.Detector.Comment,
|
||||
PackageTypes: parser.PackageTypes,
|
||||
PURLTypes: parser.PURLTypes,
|
||||
JSONSchemaTypes: parser.JSONSchemaTypes,
|
||||
Capabilities: parser.Capabilities,
|
||||
})
|
||||
@ -286,7 +288,7 @@ func convertParsersToPatterns(parsers []capabilities.Parser) []patternInfo {
|
||||
}
|
||||
|
||||
// convertDetectorsToPatterns converts detector entries to pattern info for JSON output (for non-parser catalogers)
|
||||
func convertDetectorsToPatterns(detectors []capabilities.Detector, packageTypes, jsonSchemaTypes []string) []patternInfo {
|
||||
func convertDetectorsToPatterns(detectors []capabilities.Detector, packageTypes, purlTypes, jsonSchemaTypes []string) []patternInfo {
|
||||
var patterns []patternInfo
|
||||
for _, det := range detectors {
|
||||
patterns = append(patterns, patternInfo{
|
||||
@ -296,6 +298,7 @@ func convertDetectorsToPatterns(detectors []capabilities.Detector, packageTypes,
|
||||
Packages: convertDetectorPackages(det.Packages),
|
||||
Comment: det.Comment,
|
||||
PackageTypes: packageTypes,
|
||||
PURLTypes: purlTypes,
|
||||
JSONSchemaTypes: jsonSchemaTypes,
|
||||
})
|
||||
}
|
||||
@ -353,7 +356,7 @@ func renderCatalogerInfoTable(_ *capabilities.Document, catalogers []capabilitie
|
||||
)
|
||||
|
||||
// set headers
|
||||
table.Header("ECOSYSTEM", "CATALOGER", "CRITERIA", "LICENSE", "NODES", "EDGES", "KINDS", "LISTING", "DIGESTS", "HASH")
|
||||
table.Header("ECOSYSTEM", "CATALOGER", "CRITERIA", "PURL", "LICENSE", "NODES", "EDGES", "KINDS", "LISTING", "DIGESTS", "HASH")
|
||||
|
||||
// build rows for each cataloger
|
||||
var data [][]string
|
||||
@ -367,13 +370,13 @@ func renderCatalogerInfoTable(_ *capabilities.Document, catalogers []capabilitie
|
||||
// generic catalogers: one row per parser
|
||||
for _, parser := range cat.Parsers {
|
||||
criteria := formatCriteria([]capabilities.Detector{parser.Detector})
|
||||
row := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, parser.Capabilities)
|
||||
row := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, parser.PURLTypes, parser.Capabilities)
|
||||
data = append(data, row)
|
||||
}
|
||||
} else {
|
||||
// custom catalogers: one row with all detectors
|
||||
criteria := formatCriteria(cat.Detectors)
|
||||
row := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, cat.Capabilities)
|
||||
row := buildTableRowFromCapabilities(ecosystem, cat.Name, criteria, cat.PURLTypes, cat.Capabilities)
|
||||
data = append(data, row)
|
||||
}
|
||||
}
|
||||
@ -385,7 +388,7 @@ func renderCatalogerInfoTable(_ *capabilities.Document, catalogers []capabilitie
|
||||
}
|
||||
|
||||
// buildTableRowFromCapabilities builds a table row from capability values
|
||||
func buildTableRowFromCapabilities(ecosystem, name, criteria string, caps capabilities.CapabilitySet) []string {
|
||||
func buildTableRowFromCapabilities(ecosystem, name, criteria string, purlTypes []string, caps capabilities.CapabilitySet) []string {
|
||||
// extract capability default values
|
||||
license := extractBoolCapability(caps, "license")
|
||||
nodes := extractNodesCapability(caps)
|
||||
@ -399,6 +402,7 @@ func buildTableRowFromCapabilities(ecosystem, name, criteria string, caps capabi
|
||||
ecosystem,
|
||||
name,
|
||||
criteria,
|
||||
formatPURLTypes(purlTypes),
|
||||
license,
|
||||
nodes,
|
||||
edges,
|
||||
@ -409,6 +413,14 @@ func buildTableRowFromCapabilities(ecosystem, name, criteria string, caps capabi
|
||||
}
|
||||
}
|
||||
|
||||
// formatPURLTypes renders the PURL types as a comma-separated list, or a placeholder when empty
|
||||
func formatPURLTypes(purlTypes []string) string {
|
||||
if len(purlTypes) == 0 {
|
||||
return noStyle.Render("·")
|
||||
}
|
||||
return strings.Join(purlTypes, ", ")
|
||||
}
|
||||
|
||||
// extractBoolCapability extracts a boolean capability value and formats it
|
||||
func extractBoolCapability(caps capabilities.CapabilitySet, name string) string {
|
||||
for _, cap := range caps {
|
||||
|
||||
@ -280,12 +280,15 @@ func Test_catalogerInfoReport(t *testing.T) {
|
||||
Detectors: []capabilities.Detector{
|
||||
{Method: capabilities.GlobDetection, Criteria: []string{"**/*.test"}},
|
||||
},
|
||||
PURLTypes: []string{"npm"},
|
||||
},
|
||||
},
|
||||
assertions: func(t *testing.T, got string) {
|
||||
assert.Contains(t, got, "test-cataloger")
|
||||
assert.Contains(t, got, "ECOSYSTEM")
|
||||
assert.Contains(t, got, "CATALOGER")
|
||||
assert.Contains(t, got, "PURL")
|
||||
assert.Contains(t, got, "npm")
|
||||
},
|
||||
},
|
||||
{
|
||||
@ -298,12 +301,17 @@ func Test_catalogerInfoReport(t *testing.T) {
|
||||
Ecosystem: "test",
|
||||
Type: "custom",
|
||||
Selectors: []string{"test", "custom"},
|
||||
Detectors: []capabilities.Detector{
|
||||
{Method: capabilities.GlobDetection, Criteria: []string{"**/*.test"}},
|
||||
},
|
||||
PURLTypes: []string{"npm"},
|
||||
},
|
||||
},
|
||||
assertions: func(t *testing.T, got string) {
|
||||
assert.Contains(t, got, `"name":"test-cataloger"`)
|
||||
assert.Contains(t, got, `"ecosystem":"test"`)
|
||||
assert.Contains(t, got, `"type":"custom"`)
|
||||
assert.Contains(t, got, `"purl_types":["npm"]`)
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@ -297,6 +297,11 @@ func addCatalogerFieldComment(keyNode, valueNode *yaml.Node, catalogerName strin
|
||||
if keyNode.LineComment == "" {
|
||||
keyNode.LineComment = autoGeneratedComment
|
||||
}
|
||||
case "purl_types":
|
||||
// cataloger-level purl_types (for custom catalogers) are AUTO-GENERATED
|
||||
if keyNode.LineComment == "" {
|
||||
keyNode.LineComment = autoGeneratedComment
|
||||
}
|
||||
case "json_schema_types":
|
||||
// json_schema_types are AUTO-GENERATED
|
||||
if keyNode.LineComment == "" {
|
||||
@ -367,7 +372,7 @@ func addParserComments(parsersNode *yaml.Node) {
|
||||
valueNode := parserNode.Content[i+1]
|
||||
|
||||
switch keyNode.Value {
|
||||
case "parser_function", "metadata_types", "package_types", "json_schema_types":
|
||||
case "parser_function", "metadata_types", "package_types", "purl_types", "json_schema_types":
|
||||
// add AUTO-GENERATED comment to these fields
|
||||
if keyNode.LineComment == "" {
|
||||
keyNode.LineComment = autoGeneratedComment
|
||||
|
||||
@ -3,6 +3,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/scylladb/go-set/strset"
|
||||
@ -10,6 +11,7 @@ import (
|
||||
"github.com/anchore/syft/internal/capabilities"
|
||||
"github.com/anchore/syft/internal/capabilities/internal"
|
||||
"github.com/anchore/syft/internal/packagemetadata"
|
||||
"github.com/anchore/syft/syft/pkg"
|
||||
"github.com/anchore/syft/syft/pkg/cataloger/binary"
|
||||
)
|
||||
|
||||
@ -192,6 +194,9 @@ func RegenerateCapabilities(catalogerDir string, repoRoot string) (*Statistics,
|
||||
formatOrphans(orphans))
|
||||
}
|
||||
|
||||
// 5a. Derive PURL types from the discovered package types (purely a function of pkg.Type)
|
||||
derivePURLTypes(updated)
|
||||
|
||||
// 6. Write back to YAML files with comments, preserving existing node trees
|
||||
fmt.Print(" → Writing updated capabilities files...")
|
||||
if err := saveCapabilities(catalogerDir, repoRoot, updated, existingNodes); err != nil {
|
||||
@ -427,6 +432,39 @@ func (e *EnrichmentData) GetMetadataTypes(catalogerName string) ([]string, bool)
|
||||
return types, ok
|
||||
}
|
||||
|
||||
// derivePURLTypes populates the PURLTypes field on every cataloger and parser by mapping each
|
||||
// observed package type to its canonical PURL type via pkg.Type.PackageURLType. this is a pure
|
||||
// function of the already-discovered package_types, so it needs no additional test observations.
|
||||
func derivePURLTypes(doc *capabilities.Document) {
|
||||
for i := range doc.Catalogers {
|
||||
cat := &doc.Catalogers[i]
|
||||
cat.PURLTypes = purlTypesFromPackageTypes(cat.PackageTypes)
|
||||
for j := range cat.Parsers {
|
||||
cat.Parsers[j].PURLTypes = purlTypesFromPackageTypes(cat.Parsers[j].PackageTypes)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// purlTypesFromPackageTypes maps syft package type strings (e.g. "go-module") to their PURL types
|
||||
// (e.g. "golang"), returning a deduplicated, sorted slice. package types with no PURL mapping are skipped.
|
||||
func purlTypesFromPackageTypes(packageTypes []string) []string {
|
||||
if len(packageTypes) == 0 {
|
||||
return nil
|
||||
}
|
||||
set := strset.New()
|
||||
for _, pt := range packageTypes {
|
||||
if purlType := pkg.Type(pt).PackageURLType(); purlType != "" {
|
||||
set.Add(purlType)
|
||||
}
|
||||
}
|
||||
if set.IsEmpty() {
|
||||
return nil
|
||||
}
|
||||
result := set.List()
|
||||
sort.Strings(result)
|
||||
return result
|
||||
}
|
||||
|
||||
// GetPackageTypes returns the package types for the given cataloger name
|
||||
func (e *EnrichmentData) GetPackageTypes(catalogerName string) ([]string, bool) {
|
||||
types, ok := e.packageTypes[catalogerName]
|
||||
|
||||
@ -552,3 +552,48 @@ func TestConvertToJSONSchemaTypesFromMetadata(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPURLTypesFromPackageTypes(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
packageTypes []string
|
||||
want []string
|
||||
}{
|
||||
{
|
||||
name: "nil slice returns nil",
|
||||
packageTypes: nil,
|
||||
want: nil,
|
||||
},
|
||||
{
|
||||
name: "single package type maps to purl type",
|
||||
packageTypes: []string{"go-module"},
|
||||
want: []string{"golang"},
|
||||
},
|
||||
{
|
||||
name: "multiple package types are sorted",
|
||||
packageTypes: []string{"npm", "go-module"},
|
||||
want: []string{"golang", "npm"},
|
||||
},
|
||||
{
|
||||
// java and jenkins-plugin both map to maven, so the result is deduplicated
|
||||
name: "distinct package types collapsing to one purl type are deduplicated",
|
||||
packageTypes: []string{"java-archive", "jenkins-plugin"},
|
||||
want: []string{"maven"},
|
||||
},
|
||||
{
|
||||
// unknown package types have no purl mapping and are skipped
|
||||
name: "package type without a purl mapping is skipped",
|
||||
packageTypes: []string{"UnknownPackage"},
|
||||
want: nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := purlTypesFromPackageTypes(tt.packageTypes)
|
||||
if diff := cmp.Diff(tt.want, got); diff != "" {
|
||||
t.Errorf("purlTypesFromPackageTypes() mismatch (-want +got):\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,6 +82,7 @@ type CatalogerEntry struct {
|
||||
Detectors []Detector `yaml:"detectors,omitempty" json:"detectors,omitempty"` // AUTO-GENERATED - detection methods (only for type=custom)
|
||||
MetadataTypes []string `yaml:"metadata_types,omitempty" json:"metadata_types,omitempty"` // AUTO-GENERATED - pkg metadata types emitted (only for type=custom)
|
||||
PackageTypes []string `yaml:"package_types,omitempty" json:"package_types,omitempty"` // AUTO-GENERATED - package types emitted (only for type=custom)
|
||||
PURLTypes []string `yaml:"purl_types,omitempty" json:"purl_types,omitempty"` // AUTO-GENERATED - PURL types derived from package_types (only for type=custom)
|
||||
JSONSchemaTypes []string `yaml:"json_schema_types,omitempty" json:"json_schema_types,omitempty"` // AUTO-GENERATED - JSON schema type names (UpperCamelCase)
|
||||
Capabilities CapabilitySet `yaml:"capabilities,omitempty" json:"capabilities,omitempty"` // MANUAL - config-driven capability definitions (only for type=custom)
|
||||
}
|
||||
@ -92,6 +93,7 @@ type Parser struct {
|
||||
Detector Detector `yaml:"detector" json:"detector"` // AUTO-GENERATED - how artifacts are detected
|
||||
MetadataTypes []string `yaml:"metadata_types,omitempty" json:"metadata_types,omitempty"` // AUTO-GENERATED - pkg metadata types emitted by this parser
|
||||
PackageTypes []string `yaml:"package_types,omitempty" json:"package_types,omitempty"` // AUTO-GENERATED - package types emitted by this parser
|
||||
PURLTypes []string `yaml:"purl_types,omitempty" json:"purl_types,omitempty"` // AUTO-GENERATED - PURL types derived from package_types
|
||||
JSONSchemaTypes []string `yaml:"json_schema_types,omitempty" json:"json_schema_types,omitempty"` // AUTO-GENERATED - JSON schema type names (UpperCamelCase)
|
||||
Capabilities CapabilitySet `yaml:"capabilities,omitempty" json:"capabilities,omitempty"` // MANUAL - config-driven capability definitions
|
||||
}
|
||||
|
||||
@ -26,6 +26,8 @@ catalogers:
|
||||
- pkg.ApkDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- apk
|
||||
purl_types: # AUTO-GENERATED
|
||||
- apk
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- ApkDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -27,6 +27,8 @@ catalogers:
|
||||
- pkg.AlpmDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- alpm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- alpm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- AlpmDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -932,6 +932,9 @@ catalogers:
|
||||
- apk
|
||||
- binary
|
||||
- rpm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- apk
|
||||
- rpm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- ElfBinaryPackageNoteJsonPayload
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
|
||||
@ -22,6 +22,8 @@ catalogers:
|
||||
- pkg.BitnamiSBOMEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- bitnami
|
||||
purl_types: # AUTO-GENERATED
|
||||
- bitnami
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- BitnamiSbomEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -51,6 +53,8 @@ catalogers:
|
||||
- pkg.BitnamiSBOMEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- bitnami
|
||||
purl_types: # AUTO-GENERATED
|
||||
- bitnami
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- BitnamiSbomEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -22,6 +22,8 @@ catalogers:
|
||||
- pkg.CondaMetaPackage
|
||||
package_types: # AUTO-GENERATED
|
||||
- conda
|
||||
purl_types: # AUTO-GENERATED
|
||||
- generic
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- CondaMetadataEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -25,6 +25,8 @@ catalogers:
|
||||
- pkg.ConanV2LockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- conan
|
||||
purl_types: # AUTO-GENERATED
|
||||
- conan
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- CConanLockEntry
|
||||
- CConanLockV2Entry
|
||||
@ -59,6 +61,8 @@ catalogers:
|
||||
- pkg.ConanfileEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- conan
|
||||
purl_types: # AUTO-GENERATED
|
||||
- conan
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- CConanFileEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -101,6 +105,8 @@ catalogers:
|
||||
- pkg.ConaninfoEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- conan
|
||||
purl_types: # AUTO-GENERATED
|
||||
- conan
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- CConanInfoEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.DartPubspec
|
||||
package_types: # AUTO-GENERATED
|
||||
- dart-pub
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pub
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DartPubspec
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -65,6 +67,8 @@ catalogers:
|
||||
- pkg.DartPubspecLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- dart-pub
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pub
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DartPubspecLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -29,6 +29,8 @@ catalogers:
|
||||
- pkg.DpkgDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DpkgDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -77,6 +79,8 @@ catalogers:
|
||||
- pkg.DpkgArchiveEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DpkgArchiveEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -45,6 +45,9 @@ catalogers:
|
||||
package_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DotnetDepsEntry
|
||||
- DotnetPortableExecutableEntry
|
||||
@ -83,6 +86,8 @@ catalogers:
|
||||
- pkg.DotnetDepsEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
purl_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DotnetDepsEntry
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
@ -127,6 +132,8 @@ catalogers:
|
||||
- pkg.DotnetPackagesLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
purl_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DotnetPackagesLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -170,6 +177,8 @@ catalogers:
|
||||
- pkg.DotnetPortableExecutableEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
purl_types: # AUTO-GENERATED
|
||||
- dotnet
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- DotnetPortableExecutableEntry
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
|
||||
@ -23,6 +23,8 @@ catalogers:
|
||||
- pkg.ElixirMixLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- hex
|
||||
purl_types: # AUTO-GENERATED
|
||||
- hex
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- ElixirMixLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -22,6 +22,8 @@ catalogers:
|
||||
- '**/*.app'
|
||||
package_types: # AUTO-GENERATED
|
||||
- erlang-otp
|
||||
purl_types: # AUTO-GENERATED
|
||||
- otp
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
- name: license
|
||||
default: false
|
||||
@ -62,6 +64,8 @@ catalogers:
|
||||
- pkg.ErlangRebarLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- hex
|
||||
purl_types: # AUTO-GENERATED
|
||||
- hex
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- ErlangRebarLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -26,6 +26,8 @@ catalogers:
|
||||
- pkg.PortageEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- portage
|
||||
purl_types: # AUTO-GENERATED
|
||||
- portage
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PortageDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.GitHubActionsUseStatement
|
||||
package_types: # AUTO-GENERATED
|
||||
- github-action-workflow
|
||||
purl_types: # AUTO-GENERATED
|
||||
- github
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- GithubActionsUseStatement
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -64,6 +66,8 @@ catalogers:
|
||||
- pkg.GitHubActionsUseStatement
|
||||
package_types: # AUTO-GENERATED
|
||||
- github-action
|
||||
purl_types: # AUTO-GENERATED
|
||||
- github
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- GithubActionsUseStatement
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -91,6 +95,8 @@ catalogers:
|
||||
- pkg.GitHubActionsUseStatement
|
||||
package_types: # AUTO-GENERATED
|
||||
- github-action
|
||||
purl_types: # AUTO-GENERATED
|
||||
- github
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- GithubActionsUseStatement
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -57,6 +57,8 @@ catalogers:
|
||||
- pkg.GolangBinaryBuildinfoEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- go-module
|
||||
purl_types: # AUTO-GENERATED
|
||||
- golang
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- GoModuleBuildinfoEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -113,6 +115,8 @@ catalogers:
|
||||
- pkg.GolangSourceEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- go-module
|
||||
purl_types: # AUTO-GENERATED
|
||||
- golang
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- GoModuleEntry
|
||||
- GoSourceEntry
|
||||
|
||||
@ -23,6 +23,8 @@ catalogers:
|
||||
- '**/cabal.project.freeze'
|
||||
package_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
purl_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
- name: license
|
||||
default: false
|
||||
@ -51,6 +53,8 @@ catalogers:
|
||||
- pkg.HackageStackYamlLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
purl_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- HaskellHackageStackLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -83,6 +87,8 @@ catalogers:
|
||||
- pkg.HackageStackYamlEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
purl_types: # AUTO-GENERATED
|
||||
- hackage
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- HaskellHackageStackEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.HomebrewFormula
|
||||
package_types: # AUTO-GENERATED
|
||||
- homebrew
|
||||
purl_types: # AUTO-GENERATED
|
||||
- homebrew
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- HomebrewFormula
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -91,6 +91,8 @@ catalogers:
|
||||
- pkg.JavaArchive
|
||||
package_types: # AUTO-GENERATED
|
||||
- java-archive
|
||||
purl_types: # AUTO-GENERATED
|
||||
- maven
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavaArchive
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
@ -137,6 +139,8 @@ catalogers:
|
||||
- pkg.JavaArchive
|
||||
package_types: # AUTO-GENERATED
|
||||
- java-archive
|
||||
purl_types: # AUTO-GENERATED
|
||||
- maven
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavaArchive
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -179,6 +183,8 @@ catalogers:
|
||||
- pkg.JavaArchive
|
||||
package_types: # AUTO-GENERATED
|
||||
- java-archive
|
||||
purl_types: # AUTO-GENERATED
|
||||
- maven
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavaArchive
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
|
||||
@ -38,6 +38,8 @@ catalogers:
|
||||
- pkg.BunLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavascriptBunLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -70,6 +72,8 @@ catalogers:
|
||||
- pkg.PnpmLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavascriptPnpmLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -99,6 +103,8 @@ catalogers:
|
||||
- pkg.YarnLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavascriptYarnLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -131,6 +137,8 @@ catalogers:
|
||||
- pkg.NpmPackageLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavascriptNpmPackageLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -177,6 +185,8 @@ catalogers:
|
||||
- pkg.NpmPackage
|
||||
package_types: # AUTO-GENERATED
|
||||
- npm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- npm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- JavascriptNpmPackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -45,6 +45,9 @@ catalogers:
|
||||
package_types: # AUTO-GENERATED
|
||||
- linux-kernel
|
||||
- linux-kernel-module
|
||||
purl_types: # AUTO-GENERATED
|
||||
- generic
|
||||
- generic/linux-kernel
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- LinuxKernelArchive
|
||||
- LinuxKernelModule
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.LuaRocksPackage
|
||||
package_types: # AUTO-GENERATED
|
||||
- lua-rocks
|
||||
purl_types: # AUTO-GENERATED
|
||||
- luarocks
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- LuarocksPackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -30,6 +30,8 @@ catalogers:
|
||||
- pkg.NixStoreEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- nix
|
||||
purl_types: # AUTO-GENERATED
|
||||
- nix
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- NixStoreEntry
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
@ -71,6 +73,8 @@ catalogers:
|
||||
- pkg.NixStoreEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- nix
|
||||
purl_types: # AUTO-GENERATED
|
||||
- nix
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- NixStoreEntry
|
||||
capabilities: # MANUAL - edit capabilities here
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.OpamPackage
|
||||
package_types: # AUTO-GENERATED
|
||||
- opam
|
||||
purl_types: # AUTO-GENERATED
|
||||
- opam
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- OpamPackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.PhpComposerInstalledEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- php-composer
|
||||
purl_types: # AUTO-GENERATED
|
||||
- composer
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PhpComposerInstalledEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -68,6 +70,8 @@ catalogers:
|
||||
- pkg.PhpComposerLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- php-composer
|
||||
purl_types: # AUTO-GENERATED
|
||||
- composer
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PhpComposerLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -156,6 +160,8 @@ catalogers:
|
||||
- pkg.PhpPearEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- php-pear
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pear
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PhpPearEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -194,6 +200,8 @@ catalogers:
|
||||
- pkg.PhpPeclEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- php-pecl
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pear
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PhpPeclEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -40,6 +40,8 @@ catalogers:
|
||||
- pkg.PythonPackage
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonPackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -86,6 +88,8 @@ catalogers:
|
||||
- pkg.PythonPdmLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonPdmLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -118,6 +122,8 @@ catalogers:
|
||||
- pkg.PythonUvLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonUvLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -147,6 +153,8 @@ catalogers:
|
||||
- '**/setup.py'
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
- name: license
|
||||
default: false
|
||||
@ -173,6 +181,8 @@ catalogers:
|
||||
- pkg.PythonPipfileLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonPipfileLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -204,6 +214,8 @@ catalogers:
|
||||
- pkg.PythonPoetryLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonPoetryLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -235,6 +247,8 @@ catalogers:
|
||||
- pkg.PythonRequirementsEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- python
|
||||
purl_types: # AUTO-GENERATED
|
||||
- pypi
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- PythonPipRequirementsEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.RDescription
|
||||
package_types: # AUTO-GENERATED
|
||||
- R-package
|
||||
purl_types: # AUTO-GENERATED
|
||||
- cran
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RDescription
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -25,6 +25,8 @@ catalogers:
|
||||
- pkg.RpmArchive
|
||||
package_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RpmArchive
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -71,6 +73,8 @@ catalogers:
|
||||
- pkg.RpmDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RpmDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -100,6 +104,8 @@ catalogers:
|
||||
- pkg.RpmDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
purl_types: # AUTO-GENERATED
|
||||
- rpm
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RpmDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -23,6 +23,8 @@ catalogers:
|
||||
- '**/Gemfile.next.lock'
|
||||
package_types: # AUTO-GENERATED
|
||||
- gem
|
||||
purl_types: # AUTO-GENERATED
|
||||
- gem
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
- name: license
|
||||
default: false
|
||||
@ -66,6 +68,8 @@ catalogers:
|
||||
- pkg.RubyGemspec
|
||||
package_types: # AUTO-GENERATED
|
||||
- gem
|
||||
purl_types: # AUTO-GENERATED
|
||||
- gem
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RubyGemspec
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -109,6 +113,8 @@ catalogers:
|
||||
- pkg.RubyGemspec
|
||||
package_types: # AUTO-GENERATED
|
||||
- gem
|
||||
purl_types: # AUTO-GENERATED
|
||||
- gem
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RubyGemspec
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -30,6 +30,8 @@ catalogers:
|
||||
- pkg.RustBinaryAuditEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- rust-crate
|
||||
purl_types: # AUTO-GENERATED
|
||||
- cargo
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RustCargoAuditEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -73,6 +75,8 @@ catalogers:
|
||||
- pkg.RustCargoLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- rust-crate
|
||||
purl_types: # AUTO-GENERATED
|
||||
- cargo
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- RustCargoLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -30,6 +30,8 @@ catalogers:
|
||||
- pkg.ApkDBEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- apk
|
||||
purl_types: # AUTO-GENERATED
|
||||
- apk
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- ApkDbEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -23,6 +23,8 @@ catalogers:
|
||||
- pkg.SnapEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SnapEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -49,6 +51,8 @@ catalogers:
|
||||
- pkg.SnapEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SnapEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -75,6 +79,8 @@ catalogers:
|
||||
- pkg.SnapEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SnapEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -101,6 +107,8 @@ catalogers:
|
||||
- pkg.SnapEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- deb
|
||||
purl_types: # AUTO-GENERATED
|
||||
- deb
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SnapEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.CocoaPodfileLockEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- pod
|
||||
purl_types: # AUTO-GENERATED
|
||||
- cocoapods
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- CocoaPodfileLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
@ -70,6 +72,8 @@ catalogers:
|
||||
- pkg.SwiftPackageManagerResolvedEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- swift
|
||||
purl_types: # AUTO-GENERATED
|
||||
- swift
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SwiftPackageManagerLockEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -24,6 +24,8 @@ catalogers:
|
||||
- pkg.SwiplPackEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- swiplpack
|
||||
purl_types: # AUTO-GENERATED
|
||||
- swiplpack
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- SwiplpackPackage
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -22,6 +22,8 @@ catalogers:
|
||||
- pkg.TerraformLockProviderEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- terraform
|
||||
purl_types: # AUTO-GENERATED
|
||||
- terraform
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- TerraformLockProviderEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
@ -22,6 +22,8 @@ catalogers:
|
||||
- pkg.WordpressPluginEntry
|
||||
package_types: # AUTO-GENERATED
|
||||
- wordpress-plugin
|
||||
purl_types: # AUTO-GENERATED
|
||||
- wordpress-plugin
|
||||
json_schema_types: # AUTO-GENERATED
|
||||
- WordpressPluginEntry
|
||||
capabilities: # MANUAL - preserved across regeneration
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user