summaryrefslogtreecommitdiffstats
path: root/tools/src/email_parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tools/src/email_parse.rs')
-rw-r--r--tools/src/email_parse.rs33
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(())
+}