kagami-cli 0.2.1

This simple tool checks whether there are any publicly disclosed vulnerabilities in a list of defined software.
Documentation
use crate::advisory::{Severity, TargetWithAdvisory};

pub fn should_fail_on_severity(results: &[TargetWithAdvisory], severity: Option<Severity>) -> bool {
    let severity = match severity {
        Some(s) => s,
        None => return false,
    };

    let target_severities = match severity {
        Severity::Unknown => vec![
            Severity::Unknown,
            Severity::Low,
            Severity::Medium,
            Severity::High,
            Severity::Critical,
        ],
        Severity::Low => vec![
            Severity::Low,
            Severity::Medium,
            Severity::High,
            Severity::Critical,
        ],
        Severity::Medium => vec![Severity::Medium, Severity::High, Severity::Critical],
        Severity::High => vec![Severity::High, Severity::Critical],
        Severity::Critical => vec![Severity::Critical],
    };

    !results
        .iter()
        .flat_map(|t| &t.advisories)
        .filter(|a| target_severities.contains(&a.severity))
        .collect::<Vec<_>>()
        .is_empty()
}