diff options
author | Lars Wirzenius <liw@liw.fi> | 2018-10-02 10:30:30 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2018-10-02 10:30:30 +0300 |
commit | a868123414a50af8be5cd3f5a27b4fa372987ca9 (patch) | |
tree | 2594723290a68f10a88ce72afb8bfa862a01bfc5 /src | |
parent | fb431a9bab7f6642df50af4e37c4b89eea17b98e (diff) | |
download | summainrs-a868123414a50af8be5cd3f5a27b4fa372987ca9.tar.gz |
Change: output as YAML
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 20 |
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 } |