slightly nicer JSON write_all

This commit is contained in:
Lynne Megido 2021-08-25 15:44:21 +10:00
parent a2ce336fe7
commit 1f46bef10b
Signed by: lynnesbian
GPG key ID: F0A184B5213D9F90

View file

@ -12,7 +12,7 @@ use snailquote::escape;
use crate::findings::ScanError;
use crate::utils::clap_long_version;
use crate::Findings;
use itertools::Itertools;
use itertools::{Either, Itertools};
/// A macro for creating an array of `Writable`s without needing to pepper your code with `into()`s.
/// # Usage
@ -340,21 +340,12 @@ impl Format for Json {
findings: &'a Vec<&'a Findings>,
}
let result = serde_json::to_writer_pretty(
f,
&SerdeEntries {
errors: &entries
.iter()
.filter_map(|e| e.as_ref().err())
.sorted_unstable()
.collect(),
findings: &entries
.iter()
.filter_map(|f| f.as_ref().ok())
.sorted_unstable()
.collect(),
},
);
let (errors, findings) = &entries.iter().partition_map(|entry| match entry {
Err(e) => Either::Left(e),
Ok(f) => Either::Right(f),
});
let result = serde_json::to_writer_pretty(f, &SerdeEntries { errors, findings });
if let Err(err) = result {
log::error!("Error while serialising: {}", err);