Fix the sig parsing in narinfo parsing code #3

Merged
bad merged 3 commits from fix-sig-parsing into mistress 2022-08-19 19:34:08 +02:00
Showing only changes of commit 3e34190ede - Show all commits

View file

@ -23,6 +23,8 @@ impl<'a> NarInfo<'a> {
/// ```
pub fn parse(value: &'a str) -> ParsingResult<Self> {
let mut builder = NarInfoBuilder::default();
let mut sigs = Vec::new();
for line in value.lines() {
let (key, value) = line
.split_once(':')
@ -46,20 +48,15 @@ impl<'a> NarInfo<'a> {
"Deriver" => builder.deriver(Some(Cow::from(value))),
"System" => builder.system(Some(Cow::from(value))),
"References" => builder.references(value.split(' ').map(Cow::from).collect()),
// TODO: replace with try_collect once that gets stabilized
"Sig" => builder.sigs(value.split(' ').map(Sig::try_from).try_fold(
Vec::new(),
|mut a, c| {
c.map(|c| {
a.push(c);
a
})
},
)?),
"Sig" => {
sigs.push(Sig::try_from(value)?);
&mut builder
},
_ => return Err(ParsingError::UnknownKey { key }),
};
}
builder.sigs(sigs);
builder.build()
}
}