diff options
Diffstat (limited to 'tools/src/email_parse.rs')
-rw-r--r-- | tools/src/email_parse.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/src/email_parse.rs b/tools/src/email_parse.rs new file mode 100644 index 00000000..aa240a0b --- /dev/null +++ b/tools/src/email_parse.rs @@ -0,0 +1,33 @@ +extern crate melib; +use melib::Result; +use melib::*; + +/// Parses e-mail from files and prints the debug information of the parsed `Envelope` +/// +/// # Example invocation +/// ```sh +/// ./emailparse /path/to/email [/path/to/email2 /path/to/email3 ..]" +/// ``` + +fn main() -> Result<()> { + if std::env::args().len() == 1 { + eprintln!("Usage: ./emailparse /path/to/email [/path/to/email2 /path/to/email3 ..]"); + std::process::exit(1); + } + + for i in std::env::args().skip(1) { + println!("Path is {}", i); + let filename = std::path::PathBuf::from(&i); + + if filename.exists() && filename.is_file() { + let buffer = std::fs::read_to_string(&filename) + .expect(&format!("Something went wrong reading the file {}", i,)); + let env = Envelope::from_bytes(&buffer.as_bytes(), None).expect("Couldn't parse email"); + println!("Env is {:#?}", env); + println!("{:?}", env.body_bytes(buffer.as_bytes())); + } else { + println!("{} is not a valid file.", i); + } + } + Ok(()) +} |