Add package manager parsers (npm, pip, go, cargo)
Some checks failed
CI / test (push) Failing after 9s

This commit is contained in:
2026-02-04 14:56:31 +00:00
parent f678b94ece
commit c69f585f56

View File

@@ -0,0 +1,68 @@
"""Cargo Cargo.toml parser."""
from pathlib import Path
import toml
from depcheck.models import Dependency, PackageManager
from depcheck.parsers import Parser
from depcheck.utils import parse_version_string
class CargoParser(Parser):
"""Parser for Rust Cargo.toml files."""
package_manager = PackageManager.CARGO
def supports_file(self, file_path: Path) -> bool:
return file_path.name == "Cargo.toml"
def get_file_patterns(self) -> list[str]:
return ["Cargo.toml"]
def parse(self, file_path: Path) -> list[Dependency]:
dependencies: list[Dependency] = []
try:
content = file_path.read_text()
data = toml.loads(content)
except (toml.TomlDecodeError, OSError):
return dependencies
sections = [
("dependencies", "dependencies"),
("dev-dependencies", "devDependencies"),
("build-dependencies", "buildDependencies"),
]
for section_key, category in sections:
section = data.get(section_key, {})
if isinstance(section, dict):
for name, version_info in section.items():
if isinstance(version_info, str):
version = parse_version_string(version_info)
if version:
dependencies.append(
Dependency(
name=name,
current_version=version,
package_manager=self.package_manager,
category=category,
source_file=str(file_path),
)
)
elif isinstance(version_info, dict):
version = version_info.get("version", "")
version = parse_version_string(str(version))
if version:
dependencies.append(
Dependency(
name=name,
current_version=version,
package_manager=self.package_manager,
category=category,
source_file=str(file_path),
)
)
return dependencies