diff options
Diffstat (limited to 'src/bin/summain.rs')
-rw-r--r-- | src/bin/summain.rs | 14 |
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())) } |