summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2018-10-02 10:30:30 +0300
committerLars Wirzenius <liw@liw.fi>2018-10-02 10:30:30 +0300
commita868123414a50af8be5cd3f5a27b4fa372987ca9 (patch)
tree2594723290a68f10a88ce72afb8bfa862a01bfc5 /src
parentfb431a9bab7f6642df50af4e37c4b89eea17b98e (diff)
downloadsummainrs-a868123414a50af8be5cd3f5a27b4fa372987ca9.tar.gz
Change: output as YAML
Diffstat (limited to 'src')
-rw-r--r--src/main.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/main.rs b/src/main.rs
index 925f300..3813671 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,11 +1,13 @@
use std::env;
use std::io;
+use std::collections::HashMap;
extern crate walkdir;
use walkdir::{WalkDir, DirEntry};
extern crate chrono;
extern crate crypto_hash;
+extern crate serde_yaml;
mod format;
@@ -13,16 +15,16 @@ mod format;
fn main() -> io::Result<()> {
for dirname in env::args().skip(1) {
for e in WalkDir::new(&dirname).into_iter().filter_map(|e| e.ok()) {
- println!("{}", format_rfc822(&e));
+ let hash = mkhash(&e);
+ println!("{}", serde_yaml::to_string(&hash).unwrap());
}
}
Ok(())
}
-fn format_rfc822(e: &DirEntry) -> String {
- let mut s = String::new();
- let mut fields = vec![
+fn mkhash(e: &DirEntry) -> HashMap<&str, String> {
+ let fields = vec![
("Name", format::name(e)),
("Mtime", format::mtime(e)),
("Mode", format::mode(e)),
@@ -35,15 +37,13 @@ fn format_rfc822(e: &DirEntry) -> String {
("Gid", format::gid(e)),
("Group", format::group(e)),
];
+ let mut hash: HashMap<&str, String> =
+ HashMap::from(fields.iter().cloned().collect());
if let Ok(m) = e.metadata() {
if m.is_file() {
- fields.push(("SHA256", format::sha256(e)))
+ hash.insert("SHA256", format::sha256(e));
}
}
-
- for (name, value) in fields.iter() {
- s.push_str(&format!("{}: {}\n", name, value));
- }
- s
+ hash
}