pub const POCKET_IC_SERVER_VERSION: &str = "16.1.0";
const SUPPORTED_MAJOR: u64 = 16;
#[must_use]
pub fn pocket_ic_server_requirement() -> String {
format!(
"pocket-ic-server >={SUPPORTED_MAJOR}.0.0,<{}.0.0 (stable)",
SUPPORTED_MAJOR + 1
)
}
#[must_use]
pub fn supports_pocket_ic_server(output: &[u8]) -> bool {
let Ok(text) = std::str::from_utf8(output) else {
return false;
};
let Some(version) = text.trim().strip_prefix("pocket-ic-server ") else {
return false;
};
let mut components = version.split('.');
for index in 0..3 {
let Some(part) = components.next() else {
return false;
};
if part.is_empty()
|| (part.len() > 1 && part.starts_with('0'))
|| !part.bytes().all(|byte| byte.is_ascii_digit())
{
return false;
}
let Ok(value) = part.parse::<u64>() else {
return false;
};
if index == 0 && value != SUPPORTED_MAJOR {
return false;
}
}
components.next().is_none()
}
#[cfg(test)]
mod tests;