Try to resolve a license for a component.
(comp: dict)
| 301 | |
| 302 | |
| 303 | def resolve_component(comp: dict) -> str | None: |
| 304 | """Try to resolve a license for a component.""" |
| 305 | name = comp.get("name", "") |
| 306 | version = comp.get("version", "") |
| 307 | purl = comp.get("purl", "") |
| 308 | comp_type = comp.get("type", "") |
| 309 | |
| 310 | # 1. Check hardcoded known licenses |
| 311 | if name in KNOWN_LICENSES: |
| 312 | return KNOWN_LICENSES[name] |
| 313 | |
| 314 | # 2. Route by purl type |
| 315 | if purl.startswith("pkg:cargo/"): |
| 316 | return lookup_cargo(name, version) |
| 317 | if purl.startswith("pkg:npm/"): |
| 318 | return lookup_npm(name, version) |
| 319 | if purl.startswith("pkg:pypi/"): |
| 320 | return lookup_pypi(name, version) |
| 321 | if purl.startswith("pkg:golang/"): |
| 322 | return resolve_go_name(name) |
| 323 | if purl.startswith("pkg:deb/"): |
| 324 | # Check known map by base package name |
| 325 | base = name.split(":")[0] # strip arch qualifier |
| 326 | if base in KNOWN_LICENSES: |
| 327 | return KNOWN_LICENSES[base] |
| 328 | return None |
| 329 | if comp_type == "operating-system": |
| 330 | return KNOWN_LICENSES.get(name) |
| 331 | if not purl: |
| 332 | return KNOWN_LICENSES.get(name) |
| 333 | |
| 334 | return None |
| 335 | |
| 336 | |
| 337 | def set_license(comp: dict, license_id: str) -> None: |
no test coverage detected