diff options
Diffstat (limited to 'src/format.rs')
-rw-r--r-- | src/format.rs | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/src/format.rs b/src/format.rs index e2d5f92..c88d829 100644 --- a/src/format.rs +++ b/src/format.rs @@ -11,85 +11,87 @@ use walkdir::DirEntry; use chrono::prelude::DateTime; use chrono::{Utc}; use crypto_hash::{Algorithm, Hasher}; +use serde_yaml; -pub fn name(e: &DirEntry) -> String { - e.path().to_string_lossy().to_string() +pub fn name(e: &DirEntry) -> serde_yaml::Value { + serde_yaml::to_value(&e.path().to_string_lossy()).unwrap() } -pub fn mtime(e: &DirEntry) -> String { +pub fn mtime(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); let mtime = meta.modified().unwrap(); let datetime = DateTime::<Utc>::from(mtime); - datetime.format("%Y-%m-%d %H:%M:%S.%f %z").to_string() + let mtime = datetime.format("%Y-%m-%d %H:%M:%S.%f %z").to_string(); + serde_yaml::to_value(mtime).unwrap() } -pub fn mode(e: &DirEntry) -> String { +pub fn mode(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); let mode = meta.permissions().mode(); - format!("{:06o}", mode) + serde_yaml::to_value(mode).unwrap() } -pub fn inode(e: &DirEntry) -> String { +pub fn inode(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.st_ino()) + serde_yaml::to_value(meta.st_ino()).unwrap() } -pub fn dev(e: &DirEntry) -> String { +pub fn dev(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.st_dev()) + serde_yaml::to_value(meta.st_dev()).unwrap() } -pub fn nlink(e: &DirEntry) -> String { +pub fn nlink(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.st_nlink()) + serde_yaml::to_value(meta.st_nlink()).unwrap() } -pub fn size(e: &DirEntry) -> String { +pub fn size(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.len()) + serde_yaml::to_value(meta.len()).unwrap() } -pub fn uid(e: &DirEntry) -> String { +pub fn uid(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.st_uid()) + serde_yaml::to_value(meta.st_uid()).unwrap() } -pub fn gid(e: &DirEntry) -> String { +pub fn gid(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); - format!("{}", meta.st_gid()) + serde_yaml::to_value(meta.st_gid()).unwrap() } -pub fn username(e: &DirEntry) -> String { +pub fn username(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); if let Some(u) = users::get_user_by_uid(meta.st_uid()) { - format!("{}", u.name()) + serde_yaml::to_value(u.name()).unwrap() } else { - format!("unknown user") + serde_yaml::to_value("unknown user").unwrap() } } -pub fn group(e: &DirEntry) -> String { +pub fn group(e: &DirEntry) -> serde_yaml::Value { let meta = e.metadata().unwrap(); if let Some(g) = users::get_group_by_gid(meta.st_gid()) { - format!("{}", g.name()) + serde_yaml::to_value(g.name()).unwrap() } else { - format!("unknown group") + serde_yaml::to_value("unknown group").unwrap() } } -pub fn sha256(e: &DirEntry) -> String { +pub fn sha256(e: &DirEntry) -> serde_yaml::Value { let mut ok = true; let mut hasher = Hasher::new(Algorithm::SHA256); if let Ok(file) = fs::File::open(e.path()) { @@ -112,8 +114,8 @@ pub fn sha256(e: &DirEntry) -> String { } if ok { let digest = hasher.finish(); - hex::encode(digest) + serde_yaml::to_value(hex::encode(digest)).unwrap() } else { - format!("can't read file") + serde_yaml::to_value(format!("can't read file")).unwrap() } } |