summaryrefslogtreecommitdiff
path: root/src/bin/summain.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/summain.rs')
-rw-r--r--src/bin/summain.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/bin/summain.rs b/src/bin/summain.rs
index 0abe2f5..20ca738 100644
--- a/src/bin/summain.rs
+++ b/src/bin/summain.rs
@@ -1,4 +1,5 @@
use anyhow::Context;
+use rayon::prelude::*;
use std::path::{Path, PathBuf};
use structopt::StructOpt;
use summain::ManifestEntry;
@@ -6,8 +7,11 @@ use summain::ManifestEntry;
fn main() -> anyhow::Result<()> {
let mut opt = Opt::from_args();
opt.pathnames[..].sort();
- for pathname in opt.pathnames {
- report(&pathname).with_context(|| format!("{}", pathname.display()))?
+ let v: Vec<anyhow::Result<ManifestEntry>> =
+ opt.pathnames.par_iter().map(|p| manifest(&p)).collect();
+ for m in v {
+ let m = m?;
+ println!("{}", serde_yaml::to_string(&m)?);
}
Ok(())
}
@@ -18,8 +22,6 @@ struct Opt {
pathnames: Vec<PathBuf>,
}
-fn report(pathname: &Path) -> anyhow::Result<()> {
- let e = ManifestEntry::new(pathname)?;
- println!("{}", serde_yaml::to_string(&e)?);
- Ok(())
+fn manifest(path: &Path) -> anyhow::Result<ManifestEntry> {
+ ManifestEntry::new(path).with_context(|| format!("{}", path.display()))
}