support portage build-id extension

This commit is contained in:
2025-11-18 03:21:44 +00:00
parent e2cc948803
commit 2dc5df6112
2 changed files with 32 additions and 4 deletions

View File

@@ -94,16 +94,19 @@ impl<'a> Parseable<'a, &'a str> for Version {
fn parser() -> Self::Parser {
let rev = VersionNumber::parser().preceded_by(tag("-r"));
let build_id = VersionNumber::parser().preceded_by(tag("-"));
VersionNumbers::parser()
.and(r#if(|c: &char| c.is_ascii_alphabetic() && c.is_ascii_lowercase()).opt())
.and(VersionSuffixes::parser().preceded_by(tag("_")).opt())
.and(rev.opt())
.map(|(((numbers, letter), suffixes), rev)| Version {
.and(build_id.opt())
.map(|((((numbers, letter), suffixes), rev), build_id)| Version {
numbers,
letter,
suffixes: suffixes.unwrap_or(VersionSuffixes(Vec::new())),
rev,
build_id,
})
}
}