From f31b101ce1e921a026ba234b1f0a83b0392bc118 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 20 May 2026 08:33:49 +0900 Subject: fix(compile): fix all remaining compile errors Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/shirabe/src/advisory/auditor.rs | 57 ++++++++++++------------ crates/shirabe/src/advisory/security_advisory.rs | 4 ++ 2 files changed, 32 insertions(+), 29 deletions(-) (limited to 'crates/shirabe/src/advisory') diff --git a/crates/shirabe/src/advisory/auditor.rs b/crates/shirabe/src/advisory/auditor.rs index 68bedb0..8a2f624 100644 --- a/crates/shirabe/src/advisory/auditor.rs +++ b/crates/shirabe/src/advisory/auditor.rs @@ -11,7 +11,6 @@ use shirabe_php_shim::{ }; use crate::advisory::ignored_security_advisory::IgnoredSecurityAdvisory; -use crate::advisory::partial_security_advisory::PartialSecurityAdvisory; use crate::advisory::security_advisory::SecurityAdvisory; use crate::io::console_io::ConsoleIO; use crate::io::io_interface::IOInterface; @@ -19,6 +18,7 @@ use crate::json::json_file::JsonFile; use crate::package::base_package::{self, BasePackage}; use crate::package::complete_package_interface::CompletePackageInterface; use crate::package::package_interface::PackageInterface; +use crate::repository::advisory_provider_interface::PartialOrSecurityAdvisory; use crate::repository::repository_set::RepositorySet; use crate::util::package_info::PackageInfo; @@ -184,7 +184,7 @@ impl Auditor { let error_or_warn = if warning_only { "warning" } else { "error" }; if affected_packages_count > 0 || ignored_advisories.len() > 0 { let passes: Vec<( - &IndexMap>, + &IndexMap>, String, )> = vec![ ( @@ -245,12 +245,12 @@ impl Auditor { Ok(audit_bitmask) } - /// @param array> $advisories + /// @param array> $advisories /// @param array $ignoreList /// @return bool pub fn needs_complete_advisory_load( &self, - advisories: &IndexMap>, + advisories: &IndexMap>, ignore_list: &IndexMap>, ) -> bool { if advisories.len() == 0 { @@ -258,14 +258,14 @@ impl Auditor { } // no partial advisories present - let advisories_values: Vec<&Vec> = advisories.values().collect(); + let advisories_values: Vec<&Vec> = advisories.values().collect(); if array_all( &advisories_values, - |pkg_advisories: &&Vec| { - array_all(pkg_advisories, |_advisory: &PartialSecurityAdvisory| { + |pkg_advisories: &&Vec| { + array_all(pkg_advisories, |_advisory: &PartialOrSecurityAdvisory| { // TODO(phase-b): `$advisory instanceof SecurityAdvisory` — needs an advisory // enum or trait downcast; SecurityAdvisoriesResult currently only holds - // PartialSecurityAdvisory so this is hard-coded to false + // PartialOrSecurityAdvisory so this is hard-coded to false false }) }, @@ -306,13 +306,13 @@ impl Auditor { vec![] } - /// @phpstan-param array> $allAdvisories + /// @phpstan-param array> $allAdvisories /// @param array $ignoreList List of advisory IDs, remote IDs, CVE IDs or package names that reported but not listed as vulnerabilities. /// @param array $ignoredSeverities List of ignored severity levels - /// @phpstan-return array{advisories: array>, ignoredAdvisories: array>} + /// @phpstan-return array{advisories: array>, ignoredAdvisories: array>} pub fn process_advisories( &self, - all_advisories: IndexMap>, + all_advisories: IndexMap>, ignore_list: &IndexMap>, ignored_severities: &IndexMap>, ) -> ProcessAdvisoriesResult { @@ -323,8 +323,8 @@ impl Auditor { }; } - let mut advisories: IndexMap> = IndexMap::new(); - let mut ignored: IndexMap> = IndexMap::new(); + let mut advisories: IndexMap> = IndexMap::new(); + let mut ignored: IndexMap> = IndexMap::new(); let mut ignore_reason: Option = None; for (package, pkg_advisories) in all_advisories { @@ -336,17 +336,17 @@ impl Auditor { ignore_reason = ignore_list.get(&package).cloned().unwrap_or(None); } - if array_key_exists(&advisory.advisory_id, ignore_list) { + if array_key_exists(advisory.advisory_id(), ignore_list) { is_active = false; ignore_reason = ignore_list - .get(&advisory.advisory_id) + .get(advisory.advisory_id()) .cloned() .unwrap_or(None); } // TODO(phase-b): `$advisory instanceof SecurityAdvisory` — needs an advisory enum // or trait downcast; the block below is skipped while SecurityAdvisoriesResult - // only holds PartialSecurityAdvisory + // only holds PartialOrSecurityAdvisory let advisory_as_full: Option<&SecurityAdvisory> = None; if let Some(full) = advisory_as_full { if is_string(&PhpMixed::String(full.severity.clone().unwrap_or_default())) @@ -410,11 +410,11 @@ impl Auditor { } } - /// @param array> $advisories + /// @param array> $advisories /// @return array{int, int} Count of affected packages and total count of advisories fn count_advisories( &self, - advisories: &IndexMap>, + advisories: &IndexMap>, ) -> (i64, i64) { let mut count: i64 = 0; for package_advisories in advisories.values() { @@ -429,7 +429,7 @@ impl Auditor { fn output_advisories( &self, io: &mut dyn IOInterface, - advisories: &IndexMap>, + advisories: &IndexMap>, format: &str, ) -> Result<()> { match format { @@ -468,7 +468,7 @@ impl Auditor { fn output_advisories_table( &self, io: &ConsoleIO, - advisories: &IndexMap>, + advisories: &IndexMap>, ) { for package_advisories in advisories.values() { for advisory in package_advisories { @@ -482,7 +482,7 @@ impl Auditor { "Affected versions".to_string(), "Reported at".to_string(), ]; - // TODO(phase-b): advisory typed PartialSecurityAdvisory; PHP accesses + // TODO(phase-b): advisory typed PartialOrSecurityAdvisory; PHP accesses // SecurityAdvisory fields (title, link, reportedAt, etc.) let _ = advisory; let row: Vec = vec![ @@ -518,7 +518,7 @@ impl Auditor { fn output_advisories_plain( &self, io: &mut dyn IOInterface, - advisories: &IndexMap>, + advisories: &IndexMap>, ) { let mut error: Vec = vec![]; let mut first_advisory = true; @@ -527,7 +527,7 @@ impl Auditor { if !first_advisory { error.push("--------".to_string()); } - // TODO(phase-b): advisory typed PartialSecurityAdvisory; PHP accesses + // TODO(phase-b): advisory typed PartialOrSecurityAdvisory; PHP accesses // SecurityAdvisory fields let _ = advisory; error.push(format!("Package: {}", /* advisory.packageName */ "")); @@ -623,9 +623,8 @@ impl Auditor { .into()); } - let table = io_as_console - .unwrap() - .get_table() + let mut table = io_as_console.unwrap().get_table(); + table .set_headers(vec![ "Abandoned Package".to_string().into(), "Suggested Replacement".to_string().into(), @@ -689,7 +688,7 @@ impl Auditor { } fn get_advisory_id(&self, advisory: &SecurityAdvisory) -> String { - // TODO(phase-b): advisory.advisory_id lives on inner PartialSecurityAdvisory + // TODO(phase-b): advisory.advisory_id lives on inner PartialOrSecurityAdvisory let advisory_id: &str = ""; let _ = advisory; if str_starts_with(advisory_id, "PKSA-") { @@ -749,6 +748,6 @@ impl Auditor { #[derive(Debug)] pub struct ProcessAdvisoriesResult { - pub advisories: IndexMap>, - pub ignored_advisories: IndexMap>, + pub advisories: IndexMap>, + pub ignored_advisories: IndexMap>, } diff --git a/crates/shirabe/src/advisory/security_advisory.rs b/crates/shirabe/src/advisory/security_advisory.rs index 1b1ff64..bf10c2a 100644 --- a/crates/shirabe/src/advisory/security_advisory.rs +++ b/crates/shirabe/src/advisory/security_advisory.rs @@ -44,6 +44,10 @@ impl SecurityAdvisory { } } + pub fn advisory_id(&self) -> &str { + &self.inner.advisory_id + } + pub fn affected_versions(&self) -> &dyn ConstraintInterface { &*self.inner.affected_versions } -- cgit v1.3.1