fix: Ignore pre-release field when parsing versions (#364)
Fixes #362. --------- Co-authored-by: Gerald Pinder <gmpinder@gmail.com>
This commit is contained in:
parent
c07b7ace6a
commit
e30ac64347
1 changed files with 9 additions and 4 deletions
|
|
@ -1,3 +1,4 @@
|
|||
use semver::Prerelease;
|
||||
use serde::{de::Error, Deserialize};
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
@ -23,9 +24,13 @@ impl<'de> Deserialize<'de> for Version {
|
|||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
let ver = String::deserialize(deserializer)?;
|
||||
lenient_semver::parse(&ver)
|
||||
.ok()
|
||||
.map(Self)
|
||||
.ok_or_else(|| D::Error::custom(format!("Failed to deserialize version {ver}")))
|
||||
let Ok(mut parsed_ver) = lenient_semver::parse(&ver) else {
|
||||
return Err(D::Error::custom(format!(
|
||||
"Failed to deserialize version {ver}"
|
||||
)));
|
||||
};
|
||||
// delete pre-release field or we can never match pre-release versions of tools
|
||||
parsed_ver.pre = Prerelease::EMPTY;
|
||||
Ok(Self(parsed_ver))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue