use super::{HealthStatus, NumericVersion, Tool};
pub(crate) fn certification_status(tool: Tool, version: NumericVersion) -> HealthStatus {
let certified = match tool {
Tool::Rustc | Tool::Cargo => version == NumericVersion::new(1, 97, 1),
Tool::Node => version.major == 24 && version.minor >= 19,
Tool::Pnpm => version == NumericVersion::new(11, 20, 0),
};
if certified {
HealthStatus::Ok
} else {
HealthStatus::Unverified
}
}
pub(crate) fn warn_if_unverified(tool: Tool, version: NumericVersion) {
if certification_status(tool, version) == HealthStatus::Unverified {
eprintln!(
"warning: {} {} is outside Arcature's certified toolchain; continuing unverified",
tool.program(),
version
);
}
}