use std::path::Path;
use super::config::read_flat_config;
use super::detect::get_delay_days;
use super::types::{missing_status_for_path, CheckStatus, Recommendation};
const AUBE_KEY: &str = "minimumReleaseAge";
const AUBE_KEY_KEBAB: &str = "minimum-release-age";
pub fn scan(path: &Path) -> Vec<Recommendation> {
let days = get_delay_days();
let required_minutes = days.saturating_mul(24).saturating_mul(60);
let cfg = read_flat_config(path);
let mut invalid_value = None;
let configured = [AUBE_KEY, AUBE_KEY_KEBAB]
.iter()
.filter_map(|k| cfg.get(*k))
.filter_map(|v| match v.parse::<u64>() {
Ok(n) => Some((v.clone(), n)),
Err(_) => {
invalid_value.get_or_insert_with(|| v.clone());
None
}
})
.max_by_key(|(_, n)| *n);
let status = match configured {
Some((raw, minutes)) if minutes == required_minutes => CheckStatus::Ok(raw),
Some((raw, _)) => CheckStatus::WrongValue(raw),
None => {
invalid_value.map_or_else(|| missing_status_for_path(path), CheckStatus::WrongValue)
}
};
vec![Recommendation {
key: AUBE_KEY.into(),
description: format!("Delay new versions by {days} days"),
expected: required_minutes.to_string(),
status,
}]
}