add purl types to cataloger info cmd (#4984)

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman 2026-06-16 12:13:34 -04:00 committed by GitHub
parent 92ae4d44c5
commit 951fbd454a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
40 changed files with 266 additions and 7 deletions

View File

@ -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 {

View File

@ -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"]`)
},
},
{

View File

@ -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

View File

@ -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]

View File

@ -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)
}
})
}
}

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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