use anyhow::Context; use std::path::{Path, PathBuf}; use structopt::StructOpt; use summain::ManifestEntry; fn main() -> anyhow::Result<()> { let mut opt = Opt::from_args(); opt.pathnames[..].sort(); let v: Vec> = opt.pathnames.iter().map(|p| manifest(&p)).collect(); for m in v { let m = m?; print!("{}", serde_yaml::to_string(&m)?); } Ok(()) } #[derive(StructOpt, Debug)] struct Opt { #[structopt(parse(from_os_str))] pathnames: Vec, } fn manifest(path: &Path) -> anyhow::Result { ManifestEntry::new(path).with_context(|| format!("{}", path.display())) }