aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart-registry/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/mozart-registry/src')
-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>"));