add back notmuch features (part 1)

This commit is contained in:
Clément DOUIN
2024-01-21 15:59:03 +01:00
parent a700f358fb
commit 3137e1e851
30 changed files with 456 additions and 309 deletions
@@ -1,9 +1,11 @@
use anyhow::Result;
use clap::Parser;
#[cfg(feature = "imap")]
use email::folder::add::imap::AddFolderImap;
use email::folder::add::imap::AddImapFolder;
#[cfg(feature = "maildir")]
use email::folder::add::maildir::AddFolderMaildir;
use email::folder::add::maildir::AddMaildirFolder;
#[cfg(feature = "notmuch")]
use email::folder::add::notmuch::AddNotmuchFolder;
use log::info;
#[cfg(any(feature = "imap", feature = "maildir", feature = "account-sync"))]
@@ -52,19 +54,26 @@ impl AddFolderCommand {
|builder| match add_folder_kind {
#[cfg(feature = "imap")]
Some(BackendKind::Imap) => {
builder.set_add_folder(|ctx| ctx.imap.as_ref().and_then(AddFolderImap::new));
builder.set_add_folder(|ctx| ctx.imap.as_ref().map(AddImapFolder::new_boxed));
}
#[cfg(feature = "maildir")]
Some(BackendKind::Maildir) => {
builder
.set_add_folder(|ctx| ctx.maildir.as_ref().and_then(AddFolderMaildir::new));
builder.set_add_folder(|ctx| {
ctx.maildir.as_ref().map(AddMaildirFolder::new_boxed)
});
}
#[cfg(feature = "account-sync")]
Some(BackendKind::MaildirForSync) => {
builder.set_add_folder(|ctx| {
ctx.maildir_for_sync
.as_ref()
.and_then(AddFolderMaildir::new)
.map(AddMaildirFolder::new_boxed)
});
}
#[cfg(feature = "notmuch")]
Some(BackendKind::Notmuch) => {
builder.set_add_folder(|ctx| {
ctx.notmuch.as_ref().map(AddNotmuchFolder::new_boxed)
});
}
_ => (),
+16 -6
View File
@@ -2,9 +2,11 @@ use anyhow::Result;
use clap::Parser;
use dialoguer::Confirm;
#[cfg(feature = "imap")]
use email::folder::delete::imap::DeleteFolderImap;
use email::folder::delete::imap::DeleteImapFolder;
#[cfg(feature = "maildir")]
use email::folder::delete::maildir::DeleteFolderMaildir;
use email::folder::delete::maildir::DeleteMaildirFolder;
// #[cfg(feature = "notmuch")]
// use email::folder::delete::notmuch::DeleteNotmuchFolder;
use log::info;
use std::process;
@@ -65,13 +67,14 @@ impl FolderDeleteCommand {
|builder| match delete_folder_kind {
#[cfg(feature = "imap")]
Some(BackendKind::Imap) => {
builder
.set_delete_folder(|ctx| ctx.imap.as_ref().and_then(DeleteFolderImap::new));
builder.set_delete_folder(|ctx| {
ctx.imap.as_ref().map(DeleteImapFolder::new_boxed)
});
}
#[cfg(feature = "maildir")]
Some(BackendKind::Maildir) => {
builder.set_delete_folder(|ctx| {
ctx.maildir.as_ref().and_then(DeleteFolderMaildir::new)
ctx.maildir.as_ref().map(DeleteMaildirFolder::new_boxed)
});
}
#[cfg(feature = "account-sync")]
@@ -79,9 +82,16 @@ impl FolderDeleteCommand {
builder.set_delete_folder(|ctx| {
ctx.maildir_for_sync
.as_ref()
.and_then(DeleteFolderMaildir::new)
.map(DeleteMaildirFolder::new_boxed)
});
}
#[cfg(feature = "notmuch")]
Some(BackendKind::Notmuch) => {
// TODO
// builder.set_delete_folder(|ctx| {
// ctx.notmuch.as_ref().map(DeleteNotmuchFolder::new_boxed)
// });
}
_ => (),
},
)
+14 -5
View File
@@ -1,9 +1,11 @@
use anyhow::Result;
use clap::Parser;
#[cfg(feature = "imap")]
use email::folder::expunge::imap::ExpungeFolderImap;
use email::folder::expunge::imap::ExpungeImapFolder;
#[cfg(feature = "maildir")]
use email::folder::expunge::maildir::ExpungeFolderMaildir;
use email::folder::expunge::maildir::ExpungeMaildirFolder;
// #[cfg(feature = "notmuch")]
// use email::folder::expunge::notmuch::ExpungeNotmuchFolder;
use log::info;
#[cfg(any(feature = "imap", feature = "maildir", feature = "account-sync"))]
@@ -54,13 +56,13 @@ impl FolderExpungeCommand {
#[cfg(feature = "imap")]
Some(BackendKind::Imap) => {
builder.set_expunge_folder(|ctx| {
ctx.imap.as_ref().and_then(ExpungeFolderImap::new)
ctx.imap.as_ref().map(ExpungeImapFolder::new_boxed)
});
}
#[cfg(feature = "maildir")]
Some(BackendKind::Maildir) => {
builder.set_expunge_folder(|ctx| {
ctx.maildir.as_ref().and_then(ExpungeFolderMaildir::new)
ctx.maildir.as_ref().map(ExpungeMaildirFolder::new_boxed)
});
}
#[cfg(feature = "account-sync")]
@@ -68,9 +70,16 @@ impl FolderExpungeCommand {
builder.set_expunge_folder(|ctx| {
ctx.maildir_for_sync
.as_ref()
.and_then(ExpungeFolderMaildir::new)
.map(ExpungeMaildirFolder::new_boxed)
});
}
#[cfg(feature = "notmuch")]
Some(BackendKind::Notmuch) => {
// TODO
// builder.set_expunge_folder(|ctx| {
// ctx.notmuch.as_ref().map(ExpungeNotmuchFolder::new_boxed)
// });
}
_ => (),
},
)
+14 -5
View File
@@ -1,9 +1,11 @@
use anyhow::Result;
use clap::Parser;
#[cfg(feature = "imap")]
use email::folder::list::imap::ListFoldersImap;
use email::folder::list::imap::ListImapFolders;
#[cfg(feature = "maildir")]
use email::folder::list::maildir::ListFoldersMaildir;
use email::folder::list::maildir::ListMaildirFolders;
#[cfg(feature = "notmuch")]
use email::folder::list::notmuch::ListNotmuchFolders;
use log::info;
#[cfg(any(feature = "imap", feature = "maildir", feature = "account-sync"))]
@@ -55,12 +57,12 @@ impl FolderListCommand {
#[cfg(feature = "imap")]
Some(BackendKind::Imap) => {
builder
.set_list_folders(|ctx| ctx.imap.as_ref().and_then(ListFoldersImap::new));
.set_list_folders(|ctx| ctx.imap.as_ref().map(ListImapFolders::new_boxed));
}
#[cfg(feature = "maildir")]
Some(BackendKind::Maildir) => {
builder.set_list_folders(|ctx| {
ctx.maildir.as_ref().and_then(ListFoldersMaildir::new)
ctx.maildir.as_ref().map(ListMaildirFolders::new_boxed)
});
}
#[cfg(feature = "account-sync")]
@@ -68,9 +70,16 @@ impl FolderListCommand {
builder.set_list_folders(|ctx| {
ctx.maildir_for_sync
.as_ref()
.and_then(ListFoldersMaildir::new)
.map(ListMaildirFolders::new_boxed)
});
}
#[cfg(feature = "notmuch")]
Some(BackendKind::Notmuch) => {
builder.set_list_folders(|ctx| {
ctx.notmuch.as_ref().map(ListNotmuchFolders::new_boxed)
});
}
_ => (),
},
)
+2 -2
View File
@@ -1,5 +1,5 @@
#[cfg(feature = "folder-add")]
mod create;
mod add;
#[cfg(feature = "folder-delete")]
mod delete;
#[cfg(feature = "folder-expunge")]
@@ -15,7 +15,7 @@ use clap::Subcommand;
use crate::{config::TomlConfig, printer::Printer};
#[cfg(feature = "folder-add")]
use self::create::AddFolderCommand;
use self::add::AddFolderCommand;
#[cfg(feature = "folder-delete")]
use self::delete::FolderDeleteCommand;
#[cfg(feature = "folder-expunge")]
+29 -17
View File
@@ -2,7 +2,11 @@ use anyhow::Result;
use clap::Parser;
use dialoguer::Confirm;
#[cfg(feature = "imap")]
use email::folder::purge::imap::PurgeFolderImap;
use email::folder::purge::imap::PurgeImapFolder;
// #[cfg(feature = "maildir")]
// use email::folder::purge::maildir::PurgeMaildirFolder;
// #[cfg(feature = "notmuch")]
// use email::folder::purge::notmuch::PurgeNotmuchFolder;
use log::info;
use std::process;
@@ -64,23 +68,31 @@ impl FolderPurgeCommand {
#[cfg(feature = "imap")]
Some(BackendKind::Imap) => {
builder
.set_purge_folder(|ctx| ctx.imap.as_ref().and_then(PurgeFolderImap::new));
.set_purge_folder(|ctx| ctx.imap.as_ref().map(PurgeImapFolder::new_boxed));
}
#[cfg(feature = "maildir")]
Some(BackendKind::Maildir) => {
// TODO
// builder.set_purge_folder(|ctx| {
// ctx.maildir.as_ref().map(PurgeMaildirFolder::new_boxed)
// });
}
#[cfg(feature = "account-sync")]
Some(BackendKind::MaildirForSync) => {
// TODO
// builder.set_purge_folder(|ctx| {
// ctx.maildir_for_sync
// .as_ref()
// .map(PurgeMaildirFolder::new_boxed)
// });
}
#[cfg(feature = "notmuch")]
Some(BackendKind::Notmuch) => {
// TODO
// builder.set_purge_folder(|ctx| {
// ctx.notmuch.as_ref().map(PurgeNotmuchFolder::new_boxed)
// });
}
// TODO
// #[cfg(feature = "maildir")]
// Some(BackendKind::Maildir) => {
// builder.set_purge_folder(|ctx| {
// ctx.maildir.as_ref().and_then(PurgeFolderMaildir::new)
// });
// }
// #[cfg(feature = "account-sync")]
// Some(BackendKind::MaildirForSync) => {
// builder.set_purge_folder(|ctx| {
// ctx.maildir_for_sync
// .as_ref()
// .and_then(PurgeFolderMaildir::new)
// });
// }
_ => (),
},
)