summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs69
1 files changed, 0 insertions, 69 deletions
diff --git a/src/main.rs b/src/main.rs
deleted file mode 100644
index fd23eb8..0000000
--- a/src/main.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-use anyhow::Context;
-use serde::Serialize;
-use std::fs::symlink_metadata;
-use std::fs::Metadata;
-use std::os::linux::fs::MetadataExt;
-use std::path::{Path, PathBuf};
-use structopt::StructOpt;
-
-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>,
-}
-
-#[derive(Serialize, Debug)]
-struct Entry {
- path: PathBuf,
- atime: i64,
- atime_nsec: i64,
- #[serde(with = "mode")]
- mode: u32,
- mtime: i64,
- mtime_nsec: i64,
- nlink: u64,
- size: Option<u64>,
-}
-
-impl Entry {
- fn new(path: &Path, m: Metadata) -> Self {
- Self {
- path: path.to_path_buf(),
- atime: m.st_atime(),
- atime_nsec: m.st_atime_nsec(),
- mode: m.st_mode(),
- mtime: m.st_mtime(),
- mtime_nsec: m.st_mtime_nsec(),
- nlink: m.st_nlink(),
- size: if m.is_dir() { None } else { Some(m.st_size()) },
- }
- }
-}
-
-fn report(pathname: &Path) -> anyhow::Result<()> {
- let m = symlink_metadata(pathname)?;
- let e = Entry::new(pathname, m);
- println!("{}", serde_yaml::to_string(&e)?);
- Ok(())
-}
-
-mod mode {
- use serde::{self, Serializer};
-
- pub fn serialize<S>(mode: &u32, serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- let s = unix_mode::to_string(*mode);
- serializer.serialize_str(&s)
- }
-}