use super::*;
use crate::Result;
use semver::Version;
pub fn get_newest_version(
crate_name: &str,
current_crate_version: &str,
user_agent: &str,
) -> Result<Option<Version>> {
let current_version = Version::parse(current_crate_version)
.map_err(|_| "Couldn't parse current version")?;
let newest_version = get_versions(crate_name, user_agent)?.newest_version;
let newest_version = if current_version < newest_version {
Some(newest_version)
} else {
None
};
Ok(newest_version)
}
#[macro_export]
macro_rules! newest_version {
() => {
$crate::newest_version!(
crate_name = $crate::crate_name!(),
version = $crate::crate_version!(),
user_agent = $crate::user_agent!(),
)
};
(crate_name = $crate_name:expr, version = $version:expr, user_agent = $user_agent:expr $(,)?) => {
$crate::blocking::get_newest_version($crate_name, $version, $user_agent)
};
(crate_name = $crate_name:expr, user_agent = $user_agent:expr, version = $version:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $user_agent,
)
};
(version = $version:expr, crate_name = $crate_name:expr, user_agent = $user_agent:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $user_agent,
)
};
(version = $version:expr, user_agent = $user_agent:expr, crate_name = $crate_name:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $user_agent,
)
};
(user_agent = $user_agent:expr, crate_name = $crate_name:expr, version = $version:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $user_agent,
)
};
(user_agent = $user_agent:expr, version = $version:expr, crate_name = $crate_name:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $user_agent,
)
};
(version = $version:expr, user_agent = $user_agent:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate::crate_name!(),
version = $version,
user_agent = $user_agent,
)
};
(user_agent = $user_agent:expr, version = $version:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate::crate_name!(),
version = $version,
user_agent = $user_agent,
)
};
(crate_name = $crate_name:expr, user_agent = $user_agent:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $crate::crate_version!(),
user_agent = $user_agent,
)
};
(user_agent = $user_agent:expr, crate_name = $crate_name:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $crate::crate_version!(),
user_agent = $user_agent,
)
};
(crate_name = $crate_name:expr, version = $version:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $crate::user_agent!(),
)
};
(version = $version:expr, crate_name = $crate_name:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $version,
user_agent = $crate::user_agent!(),
)
};
(crate_name = $crate_name:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate_name,
version = $crate::crate_version!(),
user_agent = $crate::user_agent!(),
)
};
(version = $version:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate::crate_name!(),
version = $version,
user_agent = $crate::user_agent!(),
)
};
(user_agent = $user_agent:expr $(,)?) => {
$crate::newest_version!(
crate_name = $crate::crate_name!(),
version = $crate::crate_version!(),
user_agent = $user_agent,
)
};
}