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.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/bin/summain.rs b/src/bin/summain.rs
new file mode 100644
index 0000000..056bc8b
--- /dev/null
+++ b/src/bin/summain.rs
@@ -0,0 +1,27 @@
+use anyhow::Context;
+use std::fs::symlink_metadata;
+use std::path::{Path, PathBuf};
+use structopt::StructOpt;
+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()))?
+ }
+ Ok(())
+}
+
+#[derive(StructOpt, Debug)]
+struct Opt {
+ #[structopt(parse(from_os_str))]
+ pathnames: Vec<PathBuf>,
+}
+
+fn report(pathname: &Path) -> anyhow::Result<()> {
+ let m = symlink_metadata(pathname)?;
+ let e = ManifestEntry::new(pathname, m);
+ println!("{}", serde_yaml::to_string(&e)?);
+ Ok(())
+}