From 91509a729cb89275ef4e9a8e064f90cdee8a06c1 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 6 Jun 2026 19:10:48 +0900 Subject: feat(package-repository): filter advisories by affected version constraint Implement the previously stubbed phase-b TODO so getSecurityAdvisories skips advisories whose affected_versions do not match the requested package constraint. Share the package VersionParser with PartialSecurityAdvisory::create across both PackageRepository and ComposerRepository instead of a separate semver parser instance. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe/src/repository/composer_repository.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'crates/shirabe/src/repository/composer_repository.rs') diff --git a/crates/shirabe/src/repository/composer_repository.rs b/crates/shirabe/src/repository/composer_repository.rs index 5ef156c..74f1426 100644 --- a/crates/shirabe/src/repository/composer_repository.rs +++ b/crates/shirabe/src/repository/composer_repository.rs @@ -915,13 +915,12 @@ impl ComposerRepository { } let parser = VersionParser::new(); - let semver_parser = shirabe_semver::version_parser::VersionParser; let repo_name = self.get_repo_name(); let create = |data: &IndexMap, name: &str, package_constraint_map: &IndexMap| -> anyhow::Result> { - let advisory = PartialSecurityAdvisory::create(name, data, &semver_parser)?; + let advisory = PartialSecurityAdvisory::create(name, data, &parser)?; let is_full = matches!(advisory, PartialOrFullSecurityAdvisory::Full(_)); if !allow_partial_advisories && !is_full { let data_mixed = PhpMixed::Array( -- cgit v1.3.1