latest generation

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman 2025-10-27 14:51:14 -04:00
parent 5d182ec5f1
commit abfe73b3da
5 changed files with 44 additions and 16 deletions

View File

@ -497,6 +497,7 @@ tasks:
desc: Add data generation tasks desc: Add data generation tasks
cmds: cmds:
- task: generate-json-schema - task: generate-json-schema
- task: generate-capabilities
- task: generate-license-list - task: generate-license-list
- task: generate-cpe-dictionary-index - task: generate-cpe-dictionary-index
@ -517,6 +518,12 @@ tasks:
cmds: cmds:
- "go generate" - "go generate"
generate-capabilities:
desc: Generate the capabilities data file
cmds:
- "go generate ./internal/capabilities/..."
- "gofmt -s -w ./internal/capabilities"
## Build-related targets ################################# ## Build-related targets #################################

View File

@ -138,6 +138,8 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
Ecosystem string `json:"ecosystem,omitempty"` Ecosystem string `json:"ecosystem,omitempty"`
Name string `json:"name"` Name string `json:"name"`
Type string `json:"type"` Type string `json:"type"`
Selectors []string `json:"selectors,omitempty"`
Deprecated bool `json:"deprecated,omitempty"`
Patterns []patternInfo `json:"patterns,omitempty"` Patterns []patternInfo `json:"patterns,omitempty"`
Capabilities capabilities.CapabilitySet `json:"capabilities,omitempty"` Capabilities capabilities.CapabilitySet `json:"capabilities,omitempty"`
Config *configInfo `json:"config,omitempty"` Config *configInfo `json:"config,omitempty"`
@ -154,6 +156,15 @@ func renderCatalogerInfoJSON(doc *capabilities.Document, catalogers []capabiliti
Ecosystem: cat.Ecosystem, Ecosystem: cat.Ecosystem,
Name: cat.Name, Name: cat.Name,
Type: cat.Type, Type: cat.Type,
Selectors: cat.Selectors,
}
// check if cataloger is deprecated based on selectors
for _, selector := range cat.Selectors {
if selector == "deprecated" {
info.Deprecated = true
break
}
} }
for _, parser := range cat.Parsers { for _, parser := range cat.Parsers {

View File

@ -546,7 +546,10 @@ func (m *CatalogerMerger) processGenericCataloger(existingEntry *capabilities.Ca
// processCustomCataloger processes an existing custom cataloger entry // processCustomCataloger processes an existing custom cataloger entry
func (m *CatalogerMerger) processCustomCataloger(existingEntry *capabilities.CatalogerEntry, info *capabilities.CatalogerInfo) { func (m *CatalogerMerger) processCustomCataloger(existingEntry *capabilities.CatalogerEntry, info *capabilities.CatalogerInfo) {
entry := *existingEntry entry := *existingEntry
entry.Ecosystem = inferEcosystem(existingEntry.Name) // only infer ecosystem if not manually set (ecosystem is MANUAL)
if existingEntry.Ecosystem == "" {
entry.Ecosystem = inferEcosystem(existingEntry.Name)
}
entry.Selectors = info.Selectors entry.Selectors = info.Selectors
// update config field from discovered mappings (AUTO-GENERATED) // update config field from discovered mappings (AUTO-GENERATED)
@ -631,8 +634,10 @@ func updateEntry(existing *capabilities.CatalogerEntry, discovered DiscoveredCat
updated.Config = "" updated.Config = ""
} }
// always re-infer ecosystem (it's MANUAL so users can override if needed) // only infer ecosystem if not manually set (ecosystem is MANUAL)
updated.Ecosystem = inferEcosystem(discovered.Name) if existing.Ecosystem == "" {
updated.Ecosystem = inferEcosystem(discovered.Name)
}
var orphans []orphanInfo var orphans []orphanInfo
var newParsers []string var newParsers []string

View File

@ -313,7 +313,7 @@ configs: # AUTO-GENERATED - config structs and their fields
app_key: python.guess-unpinned-requirements app_key: python.guess-unpinned-requirements
catalogers: catalogers:
# alpm (arch / pacman) ################################################################################################# # alpm (arch / pacman) #################################################################################################
- ecosystem: arch # MANUAL - ecosystem: alpm # MANUAL
name: alpm-db-cataloger # AUTO-GENERATED name: alpm-db-cataloger # AUTO-GENERATED
type: generic # AUTO-GENERATED type: generic # AUTO-GENERATED
source: # AUTO-GENERATED source: # AUTO-GENERATED
@ -1400,7 +1400,10 @@ catalogers:
- name: package_manager.files.digests - name: package_manager.files.digests
default: false default: false
- name: package_manager.package_integrity_hash - name: package_manager.package_integrity_hash
default: false default: true
evidence:
- ConanV1LockEntry.Ref
- ConanV2LockEntry.RecipeRevision
- function: parseConanfile # AUTO-GENERATED - function: parseConanfile # AUTO-GENERATED
detector: # AUTO-GENERATED detector: # AUTO-GENERATED
method: glob # AUTO-GENERATED method: glob # AUTO-GENERATED
@ -1608,7 +1611,7 @@ catalogers:
- name: package_manager.package_integrity_hash - name: package_manager.package_integrity_hash
default: false default: false
# Dpkg (debian) ################################################################################################### # Dpkg (debian) ###################################################################################################
- ecosystem: debian # MANUAL - ecosystem: dpkg # MANUAL
name: dpkg-db-cataloger # AUTO-GENERATED name: dpkg-db-cataloger # AUTO-GENERATED
type: generic # AUTO-GENERATED type: generic # AUTO-GENERATED
source: # AUTO-GENERATED source: # AUTO-GENERATED
@ -1660,7 +1663,7 @@ catalogers:
- DpkgDBEntry.Files[].Digest - DpkgDBEntry.Files[].Digest
- name: package_manager.package_integrity_hash - name: package_manager.package_integrity_hash
default: false default: false
- ecosystem: debian # MANUAL - ecosystem: dpkg # MANUAL
name: deb-archive-cataloger # AUTO-GENERATED name: deb-archive-cataloger # AUTO-GENERATED
type: generic # AUTO-GENERATED type: generic # AUTO-GENERATED
source: # AUTO-GENERATED source: # AUTO-GENERATED
@ -3250,7 +3253,7 @@ catalogers:
- name: package_manager.package_integrity_hash - name: package_manager.package_integrity_hash
default: false default: false
# Portage (gentoo) ######################################################################################################## # Portage (gentoo) ########################################################################################################
- ecosystem: gentoo # MANUAL - ecosystem: portage # MANUAL
name: portage-cataloger # AUTO-GENERATED name: portage-cataloger # AUTO-GENERATED
type: generic # AUTO-GENERATED type: generic # AUTO-GENERATED
source: # AUTO-GENERATED source: # AUTO-GENERATED
@ -3492,11 +3495,13 @@ catalogers:
- name: license - name: license
default: false default: false
- name: dependency.depth - name: dependency.depth
default: [] default:
- direct
- name: dependency.edges - name: dependency.edges
default: "" default: ""
- name: dependency.kinds - name: dependency.kinds
default: [] default:
- any
- name: package_manager.files.listing - name: package_manager.files.listing
default: false default: false
- name: package_manager.files.digests - name: package_manager.files.digests
@ -3575,13 +3580,11 @@ catalogers:
- name: license - name: license
default: true default: true
- name: dependency.depth - name: dependency.depth
default: default: []
- direct
- name: dependency.edges - name: dependency.edges
default: complete default: ""
- name: dependency.kinds - name: dependency.kinds
default: default: []
- runtime
- name: package_manager.files.listing - name: package_manager.files.listing
default: true default: true
evidence: evidence:
@ -4078,6 +4081,8 @@ catalogers:
default: false default: false
- name: package_manager.package_integrity_hash - name: package_manager.package_integrity_hash
default: true default: true
evidence:
- TerraformLockProviderEntry.Hashes
# WordPress ###################################################################################################### # WordPress ######################################################################################################
- ecosystem: wordpress # MANUAL - ecosystem: wordpress # MANUAL
name: wordpress-plugins-cataloger # AUTO-GENERATED name: wordpress-plugins-cataloger # AUTO-GENERATED

View File

@ -1,5 +1,5 @@
// Code generated by go generate; DO NOT EDIT. // Code generated by go generate; DO NOT EDIT.
// This file was generated by robots at 2025-10-21 13:02:27.818244 -0400 EDT m=+0.145508668 // This file was generated by robots at 2025-10-26 16:38:06.07048 -0400 EDT m=+0.167648626
// using data from https://spdx.org/licenses/licenses.json // using data from https://spdx.org/licenses/licenses.json
package spdxlicense package spdxlicense