summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-10-07 12:59:20 +0300
committerLars Wirzenius <liw@liw.fi>2018-10-07 12:59:20 +0300
commit2b2af14ee0207858dbe4ede1e743141f75fdaf56 (patch)
treef586289fa32a8b77a3820a91f7a939ffe30e974e
parent4b493bc71f0281f2a210d645767e136ed1494a4e (diff)
downloadsummainrs-2b2af14ee0207858dbe4ede1e743141f75fdaf56.tar.gz
Change: use more YAML-like output (fewer quoted strings)
-rw-r--r--src/format.rs56
-rw-r--r--src/main.rs5
2 files changed, 31 insertions, 30 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()
}
}
diff --git a/src/main.rs b/src/main.rs
index 8ce3978..3977c40 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -14,7 +14,7 @@ use rayon::prelude::*;
mod format;
-type Map = BTreeMap<&'static str, String>;
+type Map = BTreeMap<&'static str, serde_yaml::Value>;
fn main() -> io::Result<()> {
@@ -69,8 +69,7 @@ fn mkmap(e: &DirEntry) -> Map {
("Gid", format::gid(&e)),
("Group", format::group(&e)),
];
- let mut map: BTreeMap<&str, String> =
- BTreeMap::from(fields.iter().cloned().collect());
+ let mut map: Map = BTreeMap::from(fields.iter().cloned().collect());
if let Ok(m) = e.metadata() {
if m.is_file() {