aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart-registry
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-08 23:45:50 +0900
committernsfisis <nsfisis@gmail.com>2026-05-08 23:45:50 +0900
commit059d528b76914aaefebc42705984586ebb1c607a (patch)
treece8f196570273621c2dab859e1c763fa41d54fb0 /crates/mozart-registry
parent18d5a78fee75e0a466355e6edfb634d8f7a7565a (diff)
downloadphp-mozart-059d528b76914aaefebc42705984586ebb1c607a.tar.gz
php-mozart-059d528b76914aaefebc42705984586ebb1c607a.tar.zst
php-mozart-059d528b76914aaefebc42705984586ebb1c607a.zip
refactor(advisory): fix clippy warnings
Implement std::str::FromStr for AuditFormat and AbandonedHandling instead of ad-hoc from_str methods (resolves should_implement_trait). Group Auditor::audit() parameters into AuditOptions to resolve too_many_arguments.
Diffstat (limited to 'crates/mozart-registry')
-rw-r--r--crates/mozart-registry/src/advisory.rs36
1 files changed, 23 insertions, 13 deletions
diff --git a/crates/mozart-registry/src/advisory.rs b/crates/mozart-registry/src/advisory.rs
index 8cf112e..894a0ac 100644
--- a/crates/mozart-registry/src/advisory.rs
+++ b/crates/mozart-registry/src/advisory.rs
@@ -66,6 +66,17 @@ pub struct AbandonedPackage {
pub replacement: Option<String>,
}
+/// Options passed to `Auditor::audit()`.
+pub struct AuditOptions<'a> {
+ pub format: AuditFormat,
+ pub warning_only: bool,
+ pub ignore_list: &'a IndexMap<String, Option<String>>,
+ pub abandoned: AbandonedHandling,
+ pub ignored_severities: &'a IndexMap<String, Option<String>>,
+ pub ignore_unreachable: bool,
+ pub ignore_abandoned: &'a IndexMap<String, Option<String>>,
+}
+
/// Mirrors `Composer\Advisory\Auditor`.
pub struct Auditor;
@@ -82,34 +93,33 @@ impl Auditor {
console: &Console,
repo_set: &RepositorySet,
packages: &[PackageInfo],
- format: AuditFormat,
- warning_only: bool,
- ignore_list: &IndexMap<String, Option<String>>,
- abandoned: AbandonedHandling,
- ignored_severities: &IndexMap<String, Option<String>>,
- ignore_unreachable: bool,
- ignore_abandoned: &IndexMap<String, Option<String>>,
+ options: &AuditOptions<'_>,
) -> anyhow::Result<u8> {
+ let format = options.format;
let (all_advisories, unreachable_repos) = repo_set
.get_matching_security_advisories(
packages,
format == AuditFormat::Summary,
- ignore_unreachable,
+ options.ignore_unreachable,
)
.await?;
let ProcessedAdvisories {
advisories,
ignored_advisories,
- } = self.process_advisories(all_advisories, ignore_list, ignored_severities);
+ } = self.process_advisories(
+ all_advisories,
+ options.ignore_list,
+ options.ignored_severities,
+ );
- let abandoned_packages = if abandoned == AbandonedHandling::Ignore {
+ let abandoned_packages = if options.abandoned == AbandonedHandling::Ignore {
vec![]
} else {
- self.filter_abandoned_packages(packages, ignore_abandoned)
+ self.filter_abandoned_packages(packages, options.ignore_abandoned)
};
- let abandoned_count = if abandoned == AbandonedHandling::Fail {
+ let abandoned_count = if options.abandoned == AbandonedHandling::Fail {
abandoned_packages.len()
} else {
0
@@ -159,7 +169,7 @@ impl Auditor {
let msg = format!(
"Found {active_total} security vulnerability advisor{plurality} affecting {active_pkg_count} package{pkg_plurality}{punctuation}"
);
- if warning_only {
+ if options.warning_only {
console_writeln_error!(console, &console_format!("<warning>{msg}</warning>"));
} else {
console_writeln_error!(console, &console_format!("<error>{msg}</error>"));