@@ 6,5 6,6 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
+clap = {version="3.0.12", features=["derive"]}
maildir = "0.5.0"
mailparse = "0.13.8"
@@ 1,6 1,12 @@
+use clap::Parser;
use maildir::*;
use mailparse::*;
-use std::env::args;
+
+#[derive(Parser, Debug)]
+#[clap(author, version, about, long_about = None)]
+struct Cli {
+ maildir: String,
+}
fn get_subject(headers: Vec<MailHeader>) -> Result<String, ()> {
for h in headers {
@@ 12,13 18,12 @@ fn get_subject(headers: Vec<MailHeader>) -> Result<String, ()> {
}
fn main() {
- for dir in args() {
- let maildir = Maildir::from(dir);
- for entry in maildir.list_new() {
- match get_subject(entry.unwrap().headers().unwrap()) {
- Ok(s) => println!("Subject: {}", s),
- Err(_) => println!("failed"),
- }
+ let cli = Cli::parse();
+ let maildir = Maildir::from(cli.maildir);
+ for entry in maildir.list_new() {
+ match get_subject(entry.unwrap().headers().unwrap()) {
+ Ok(s) => println!("Subject: {}", s),
+ Err(_) => println!("failed"),
}
}
}