use anyhow::Context; use std::fs::symlink_metadata; use std::path::{Path, PathBuf}; use structopt::StructOpt; use summain::Entry; 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()))? } Ok(()) } #[derive(StructOpt, Debug)] struct Opt { #[structopt(parse(from_os_str))] pathnames: Vec, } fn report(pathname: &Path) -> anyhow::Result<()> { let m = symlink_metadata(pathname)?; let e = Entry::new(pathname, m); println!("{}", serde_yaml::to_string(&e)?); Ok(()) }