mirror of
https://github.com/pimalaya/himalaya.git
synced 2026-06-17 13:17:55 +08:00
refactor new backend api
This commit is contained in:
@@ -1,18 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::envelope::list::imap::ListImapEnvelopes;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::envelope::list::maildir::ListMaildirEnvelopes;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::envelope::list::notmuch::ListNotmuchEnvelopes;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
folder::arg::name::FolderNameOptionalArg,
|
||||
printer::{PrintTableOpts, Printer},
|
||||
@@ -85,38 +79,10 @@ impl ListEnvelopesCommand {
|
||||
let list_envelopes_kind = toml_account_config.list_envelopes_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
list_envelopes_kind,
|
||||
|builder| match list_envelopes_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_list_envelopes(|ctx| {
|
||||
ctx.imap.as_ref().map(ListImapEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_list_envelopes(|ctx| {
|
||||
ctx.maildir.as_ref().map(ListMaildirEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_list_envelopes(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(ListMaildirEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_list_envelopes(|ctx| {
|
||||
ctx.notmuch.as_ref().map(ListNotmuchEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_list_envelopes(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,21 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::envelope::watch::imap::WatchImapEnvelopes;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::envelope::watch::maildir::WatchMaildirEnvelopes;
|
||||
// #[cfg(feature = "notmuch")]
|
||||
// use email::envelope::watch::notmuch::WatchNotmuchEnvelopes;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
printer::Printer,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
folder::arg::name::FolderNameOptionalFlag, printer::Printer,
|
||||
};
|
||||
|
||||
/// Watch envelopes for changes.
|
||||
@@ -49,39 +40,10 @@ impl WatchEnvelopesCommand {
|
||||
let watch_envelopes_kind = toml_account_config.watch_envelopes_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
watch_envelopes_kind,
|
||||
|builder| match watch_envelopes_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_watch_envelopes(|ctx| {
|
||||
ctx.imap.as_ref().map(WatchImapEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_watch_envelopes(|ctx| {
|
||||
ctx.maildir.as_ref().map(WatchMaildirEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_watch_envelopes(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(WatchMaildirEnvelopes::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
// TODO
|
||||
// builder.set_watch_envelopes(|ctx| {
|
||||
// ctx.notmuch.as_ref().map(WatchNotmuchEnvelopes::new_boxed)
|
||||
// });
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_watch_envelopes(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@ use crate::backend::BackendKind;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct EnvelopeConfig {
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
pub list: Option<ListEnvelopesConfig>,
|
||||
#[cfg(feature = "envelope-watch")]
|
||||
pub watch: Option<WatchEnvelopesConfig>,
|
||||
#[cfg(feature = "envelope-get")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-get"))]
|
||||
pub get: Option<GetEnvelopeConfig>,
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ impl EnvelopeConfig {
|
||||
#[allow(unused_mut)]
|
||||
let mut kinds = HashSet::default();
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
if let Some(list) = &self.list {
|
||||
kinds.extend(list.get_used_backends());
|
||||
}
|
||||
@@ -28,7 +28,7 @@ impl EnvelopeConfig {
|
||||
kinds.extend(watch.get_used_backends());
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-get")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-get"))]
|
||||
if let Some(get) = &self.get {
|
||||
kinds.extend(get.get_used_backends());
|
||||
}
|
||||
@@ -37,7 +37,7 @@ impl EnvelopeConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct ListEnvelopesConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
@@ -46,7 +46,7 @@ pub struct ListEnvelopesConfig {
|
||||
pub remote: email::envelope::list::config::EnvelopeListConfig,
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
impl ListEnvelopesConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
@@ -81,13 +81,13 @@ impl WatchEnvelopesConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-get")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-get"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct GetEnvelopeConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-get")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-get"))]
|
||||
impl GetEnvelopeConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::flag::add::imap::AddImapFlags;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::flag::add::maildir::AddMaildirFlags;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::flag::add::notmuch::AddNotmuchFlags;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
flag::arg::ids_and_flags::{into_tuple, IdsAndFlagsArgs},
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -54,34 +48,10 @@ impl FlagAddCommand {
|
||||
let add_flags_kind = toml_account_config.add_flags_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
add_flags_kind,
|
||||
|builder| match add_flags_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_flags(|ctx| ctx.imap.as_ref().map(AddImapFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.notmuch.as_ref().map(AddNotmuchFlags::new_boxed));
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_add_flags(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::flag::remove::imap::RemoveImapFlags;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::flag::remove::maildir::RemoveMaildirFlags;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::flag::remove::notmuch::RemoveNotmuchFlags;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
flag::arg::ids_and_flags::{into_tuple, IdsAndFlagsArgs},
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -54,37 +48,10 @@ impl FlagRemoveCommand {
|
||||
let remove_flags_kind = toml_account_config.remove_flags_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
remove_flags_kind,
|
||||
|builder| match remove_flags_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder
|
||||
.set_remove_flags(|ctx| ctx.imap.as_ref().map(RemoveImapFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_remove_flags(|ctx| {
|
||||
ctx.maildir.as_ref().map(RemoveMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_remove_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(RemoveMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_remove_flags(|ctx| {
|
||||
ctx.notmuch.as_ref().map(RemoveNotmuchFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_remove_flags(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::flag::set::imap::SetImapFlags;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::flag::set::maildir::SetMaildirFlags;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::flag::set::notmuch::SetNotmuchFlags;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
flag::arg::ids_and_flags::{into_tuple, IdsAndFlagsArgs},
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -54,34 +48,10 @@ impl FlagSetCommand {
|
||||
let set_flags_kind = toml_account_config.set_flags_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
set_flags_kind,
|
||||
|builder| match set_flags_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_set_flags(|ctx| ctx.imap.as_ref().map(SetImapFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder
|
||||
.set_set_flags(|ctx| ctx.maildir.as_ref().map(SetMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_set_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(SetMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder
|
||||
.set_set_flags(|ctx| ctx.notmuch.as_ref().map(SetNotmuchFlags::new_boxed));
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_set_flags(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -3,19 +3,14 @@ pub mod command;
|
||||
pub mod config;
|
||||
pub mod flag;
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
use anyhow::Result;
|
||||
#[cfg(feature = "envelope-list")]
|
||||
use email::account::config::AccountConfig;
|
||||
use serde::Serialize;
|
||||
#[cfg(feature = "envelope-list")]
|
||||
use std::ops;
|
||||
|
||||
use crate::flag::Flags;
|
||||
#[cfg(feature = "envelope-list")]
|
||||
use crate::{
|
||||
cache::IdMapper,
|
||||
flag::Flag,
|
||||
flag::{Flag, Flags},
|
||||
printer::{PrintTable, PrintTableOpts, WriteColor},
|
||||
ui::{Cell, Row, Table},
|
||||
};
|
||||
@@ -35,7 +30,7 @@ pub struct Envelope {
|
||||
pub date: String,
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
impl Table for Envelope {
|
||||
fn head() -> Row {
|
||||
Row::new()
|
||||
@@ -81,12 +76,12 @@ impl Table for Envelope {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
/// Represents the list of envelopes.
|
||||
#[derive(Clone, Debug, Default, Serialize)]
|
||||
pub struct Envelopes(Vec<Envelope>);
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
impl Envelopes {
|
||||
pub fn from_backend(
|
||||
config: &AccountConfig,
|
||||
@@ -113,7 +108,7 @@ impl Envelopes {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
impl ops::Deref for Envelopes {
|
||||
type Target = Vec<Envelope>;
|
||||
|
||||
@@ -122,7 +117,7 @@ impl ops::Deref for Envelopes {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "envelope-list")]
|
||||
#[cfg(any(feature = "account-sync", feature = "envelope-list"))]
|
||||
impl PrintTable for Envelopes {
|
||||
fn print_table(&self, writer: &mut dyn WriteColor, opts: PrintTableOpts) -> Result<()> {
|
||||
writeln!(writer)?;
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
use anyhow::{Context, Result};
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::get::imap::GetImapMessages;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::{flag::add::maildir::AddMaildirFlags, message::peek::maildir::PeekMaildirMessages};
|
||||
use log::info;
|
||||
use std::{fs, path::PathBuf};
|
||||
use uuid::Uuid;
|
||||
@@ -11,11 +7,8 @@ use uuid::Uuid;
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs, folder::arg::name::FolderNameOptionalFlag,
|
||||
printer::Printer,
|
||||
};
|
||||
|
||||
@@ -55,38 +48,10 @@ impl AttachmentDownloadCommand {
|
||||
let get_messages_kind = toml_account_config.get_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
get_messages_kind,
|
||||
|builder| match get_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder
|
||||
.set_get_messages(|ctx| ctx.imap.as_ref().map(GetImapMessages::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_get_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,19 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::copy::imap::CopyImapMessages;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::copy::maildir::CopyMaildirMessages;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::copy::notmuch::CopyNotmuchMessages;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs,
|
||||
folder::arg::name::{SourceFolderNameOptionalFlag, TargetFolderNameArg},
|
||||
@@ -57,38 +50,10 @@ impl MessageCopyCommand {
|
||||
let copy_messages_kind = toml_account_config.copy_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
copy_messages_kind,
|
||||
|#[allow(unused)] builder| match copy_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_copy_messages(|ctx| {
|
||||
ctx.imap.as_ref().map(CopyImapMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_copy_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(CopyMaildirMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_copy_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(CopyMaildirMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_copy_messages(|ctx| {
|
||||
ctx.notmuch.as_ref().map(CopyNotmuchMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_copy_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,22 +1,12 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::{flag::add::imap::AddImapFlags, message::move_::imap::MoveImapMessages};
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::{flag::add::maildir::AddMaildirFlags, message::move_::maildir::MoveMaildirMessages};
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::{flag::add::notmuch::AddNotmuchFlags, message::move_::notmuch::MoveNotmuchMessages};
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs, folder::arg::name::FolderNameOptionalFlag,
|
||||
printer::Printer,
|
||||
};
|
||||
|
||||
@@ -58,48 +48,10 @@ impl MessageDeleteCommand {
|
||||
let delete_messages_kind = toml_account_config.delete_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
delete_messages_kind,
|
||||
|#[allow(unused)] builder| match delete_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.imap.as_ref().map(MoveImapMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| ctx.imap.as_ref().map(AddImapFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(MoveMaildirMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(MoveMaildirMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.notmuch.as_ref().map(MoveNotmuchMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.notmuch.as_ref().map(AddNotmuchFlags::new_boxed));
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_delete_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,23 +1,12 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdArg,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -70,55 +59,12 @@ impl MessageForwardCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
add_message_kind.into_iter().chain(send_message_kind),
|
||||
|#[allow(unused)] builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|builder| {
|
||||
builder.set_add_message(Some(None));
|
||||
builder.set_send_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
@@ -134,6 +80,6 @@ impl MessageForwardCommand {
|
||||
.with_body(self.body.raw())
|
||||
.build()
|
||||
.await?;
|
||||
editor::edit_tpl_with_editor(&account_config, printer, &backend, tpl).await
|
||||
editor::edit_tpl_with_editor(account_config, printer, &backend, tpl).await
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use log::{debug, info};
|
||||
use mail_builder::MessageBuilder;
|
||||
use url::Url;
|
||||
@@ -17,10 +7,7 @@ use url::Url;
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
printer::Printer,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig, printer::Printer,
|
||||
ui::editor,
|
||||
};
|
||||
|
||||
@@ -67,55 +54,12 @@ impl MessageMailtoCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
add_message_kind.into_iter().chain(send_message_kind),
|
||||
|builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
builder.set_add_message(Some(None));
|
||||
builder.set_send_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
@@ -149,6 +93,6 @@ impl MessageMailtoCommand {
|
||||
.from_msg_builder(builder)
|
||||
.await?;
|
||||
|
||||
editor::edit_tpl_with_editor(&account_config, printer, &backend, tpl).await
|
||||
editor::edit_tpl_with_editor(account_config, printer, &backend, tpl).await
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ pub mod forward;
|
||||
#[cfg(feature = "message-mailto")]
|
||||
pub mod mailto;
|
||||
#[cfg(feature = "message-move")]
|
||||
pub mod move_;
|
||||
pub mod r#move;
|
||||
#[cfg(feature = "message-read")]
|
||||
pub mod read;
|
||||
#[cfg(feature = "message-reply")]
|
||||
@@ -33,7 +33,7 @@ use self::forward::MessageForwardCommand;
|
||||
#[cfg(feature = "message-mailto")]
|
||||
use self::mailto::MessageMailtoCommand;
|
||||
#[cfg(feature = "message-move")]
|
||||
use self::move_::MessageMoveCommand;
|
||||
use self::r#move::MessageMoveCommand;
|
||||
#[cfg(feature = "message-read")]
|
||||
use self::read::MessageReadCommand;
|
||||
#[cfg(feature = "message-reply")]
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::move_::imap::MoveImapMessages;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::move_::maildir::MoveMaildirMessages;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::move_::notmuch::MoveNotmuchMessages;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
@@ -13,7 +7,7 @@ use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs,
|
||||
folder::arg::name::{SourceFolderNameOptionalFlag, TargetFolderNameArg},
|
||||
@@ -57,38 +51,10 @@ impl MessageMoveCommand {
|
||||
let move_messages_kind = toml_account_config.move_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
move_messages_kind,
|
||||
|#[allow(unused)] builder| match move_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.imap.as_ref().map(MoveImapMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(MoveMaildirMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(MoveMaildirMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_move_messages(|ctx| {
|
||||
ctx.notmuch.as_ref().map(MoveNotmuchMessages::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_move_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::{get::imap::GetImapMessages, peek::imap::PeekImapMessages};
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::{flag::add::maildir::AddMaildirFlags, message::peek::maildir::PeekMaildirMessages};
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::{flag::add::notmuch::AddNotmuchFlags, message::peek::notmuch::PeekNotmuchMessages};
|
||||
use log::info;
|
||||
use mml::message::FilterParts;
|
||||
|
||||
@@ -13,11 +7,8 @@ use mml::message::FilterParts;
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdsArgs, folder::arg::name::FolderNameOptionalFlag,
|
||||
printer::Printer,
|
||||
};
|
||||
|
||||
@@ -102,49 +93,10 @@ impl MessageReadCommand {
|
||||
let get_messages_kind = toml_account_config.get_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
get_messages_kind,
|
||||
|#[allow(unused)] builder| match get_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.imap.as_ref().map(PeekImapMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_get_messages(|ctx| ctx.imap.as_ref().map(GetImapMessages::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.notmuch.as_ref().map(PeekNotmuchMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.notmuch.as_ref().map(AddNotmuchFlags::new_boxed));
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_get_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,23 +1,12 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdArg,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -72,55 +61,12 @@ impl MessageReplyCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
add_message_kind.into_iter().chain(send_message_kind),
|
||||
|#[allow(unused)] builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|builder| {
|
||||
builder.set_add_message(Some(None));
|
||||
builder.set_send_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
@@ -137,6 +83,6 @@ impl MessageReplyCommand {
|
||||
.with_reply_all(self.reply.all)
|
||||
.build()
|
||||
.await?;
|
||||
editor::edit_tpl_with_editor(&account_config, printer, &backend, tpl).await
|
||||
editor::edit_tpl_with_editor(account_config, printer, &backend, tpl).await
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
use log::info;
|
||||
use std::io::{self, BufRead, IsTerminal};
|
||||
|
||||
@@ -13,12 +7,8 @@ use std::io::{self, BufRead, IsTerminal};
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
message::arg::MessageRawArg,
|
||||
printer::Printer,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
folder::arg::name::FolderNameOptionalFlag, message::arg::MessageRawArg, printer::Printer,
|
||||
};
|
||||
|
||||
/// Save a message to a folder.
|
||||
@@ -55,36 +45,10 @@ impl MessageSaveCommand {
|
||||
let add_message_kind = toml_account_config.add_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
add_message_kind,
|
||||
|#[allow(unused)] builder| match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| ctx.imap.as_ref().map(AddImapMessage::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_add_message(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,27 +1,13 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use log::info;
|
||||
use std::io::{self, BufRead, IsTerminal};
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
message::arg::MessageRawArg,
|
||||
printer::Printer,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
message::arg::MessageRawArg, printer::Printer,
|
||||
};
|
||||
|
||||
/// Send a message.
|
||||
@@ -54,61 +40,20 @@ impl MessageSendCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
#[cfg(feature = "message-add")]
|
||||
let add_message_kind = toml_account_config
|
||||
.add_message_kind()
|
||||
.filter(|_| account_config.should_save_copy_sent_message());
|
||||
#[cfg(not(feature = "message-add"))]
|
||||
let add_message_kind = None;
|
||||
let send_message_kind = send_message_kind.into_iter().chain(
|
||||
toml_account_config
|
||||
.add_message_kind()
|
||||
.filter(|_| account_config.should_save_copy_sent_message()),
|
||||
);
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
send_message_kind.into_iter().chain(add_message_kind),
|
||||
|#[allow(unused)] builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
toml_account_config.clone(),
|
||||
account_config,
|
||||
send_message_kind,
|
||||
|builder| {
|
||||
builder.set_send_message(Some(None));
|
||||
#[cfg(feature = "message-add")]
|
||||
builder.set_add_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "notmuch")]
|
||||
use email::message::add::notmuch::AddNotmuchMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use email::message::Message;
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
message::arg::{body::MessageRawBodyArg, header::HeaderRawArgs},
|
||||
printer::Printer,
|
||||
@@ -61,55 +50,12 @@ impl MessageWriteCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
add_message_kind.into_iter().chain(send_message_kind),
|
||||
|#[allow(unused)] builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "notmuch")]
|
||||
Some(BackendKind::Notmuch) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.notmuch.as_ref().map(AddNotmuchMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|builder| {
|
||||
builder.set_add_message(Some(None));
|
||||
builder.set_send_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
@@ -120,6 +66,6 @@ impl MessageWriteCommand {
|
||||
.build()
|
||||
.await?;
|
||||
|
||||
editor::edit_tpl_with_editor(&account_config, printer, &backend, tpl).await
|
||||
editor::edit_tpl_with_editor(account_config, printer, &backend, tpl).await
|
||||
}
|
||||
}
|
||||
|
||||
+18
-19
@@ -5,19 +5,18 @@ use crate::backend::BackendKind;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct MessageConfig {
|
||||
#[cfg(any(feature = "message-add", feature = "message-write"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-add"))]
|
||||
pub write: Option<MessageAddConfig>,
|
||||
#[cfg(any(feature = "message-send", feature = "template-send"))]
|
||||
pub send: Option<MessageSendConfig>,
|
||||
#[cfg(feature = "message-peek")]
|
||||
#[cfg(feature = "account-sync")]
|
||||
pub peek: Option<MessagePeekConfig>,
|
||||
#[cfg(any(feature = "message-get", feature = "message-read"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-get"))]
|
||||
pub read: Option<MessageGetConfig>,
|
||||
#[cfg(feature = "message-copy")]
|
||||
pub copy: Option<MessageCopyConfig>,
|
||||
#[cfg(feature = "message-move")]
|
||||
#[serde(rename = "move")]
|
||||
pub move_: Option<MessageMoveConfig>,
|
||||
#[cfg(any(feature = "account-sync", feature = "message-move"))]
|
||||
pub r#move: Option<MessageMoveConfig>,
|
||||
#[cfg(feature = "message-delete")]
|
||||
pub delete: Option<MessageDeleteConfig>,
|
||||
}
|
||||
@@ -27,7 +26,7 @@ impl MessageConfig {
|
||||
#[allow(unused_mut)]
|
||||
let mut kinds = HashSet::default();
|
||||
|
||||
#[cfg(any(feature = "message-add", feature = "message-write"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-add"))]
|
||||
if let Some(add) = &self.write {
|
||||
kinds.extend(add.get_used_backends());
|
||||
}
|
||||
@@ -37,12 +36,12 @@ impl MessageConfig {
|
||||
kinds.extend(send.get_used_backends());
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-peek")]
|
||||
#[cfg(feature = "account-sync")]
|
||||
if let Some(peek) = &self.peek {
|
||||
kinds.extend(peek.get_used_backends());
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "message-get", feature = "message-read"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-get"))]
|
||||
if let Some(get) = &self.read {
|
||||
kinds.extend(get.get_used_backends());
|
||||
}
|
||||
@@ -52,8 +51,8 @@ impl MessageConfig {
|
||||
kinds.extend(copy.get_used_backends());
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-move")]
|
||||
if let Some(move_) = &self.move_ {
|
||||
#[cfg(any(feature = "account-sync", feature = "message-move"))]
|
||||
if let Some(move_) = &self.r#move {
|
||||
kinds.extend(move_.get_used_backends());
|
||||
}
|
||||
|
||||
@@ -61,7 +60,7 @@ impl MessageConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "message-add", feature = "message-write"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-add"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct MessageAddConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
@@ -70,7 +69,7 @@ pub struct MessageAddConfig {
|
||||
pub remote: email::message::add::config::MessageWriteConfig,
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "message-add", feature = "message-write"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-add"))]
|
||||
impl MessageAddConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
@@ -105,13 +104,13 @@ impl MessageSendConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-peek")]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-peek"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct MessagePeekConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-peek")]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-peek"))]
|
||||
impl MessagePeekConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
@@ -124,7 +123,7 @@ impl MessagePeekConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "message-get", feature = "message-read"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-get"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct MessageGetConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
@@ -133,7 +132,7 @@ pub struct MessageGetConfig {
|
||||
pub remote: email::message::get::config::MessageReadConfig,
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "message-get", feature = "message-read"))]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-get"))]
|
||||
impl MessageGetConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
@@ -165,13 +164,13 @@ impl MessageCopyConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-move")]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-move"))]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Deserialize, Serialize)]
|
||||
pub struct MessageMoveConfig {
|
||||
pub backend: Option<BackendKind>,
|
||||
}
|
||||
|
||||
#[cfg(feature = "message-move")]
|
||||
#[cfg(any(feature = "account-sync", feature = "message-move"))]
|
||||
impl MessageMoveConfig {
|
||||
pub fn get_used_backends(&self) -> HashSet<&BackendKind> {
|
||||
let mut kinds = HashSet::default();
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::get::imap::GetImapMessages;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::{flag::add::maildir::AddMaildirFlags, message::peek::maildir::PeekMaildirMessages};
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdArg,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -61,38 +56,10 @@ impl TemplateForwardCommand {
|
||||
let get_messages_kind = toml_account_config.get_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
get_messages_kind,
|
||||
|#[allow(unused)] builder| match get_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder
|
||||
.set_get_messages(|ctx| ctx.imap.as_ref().map(GetImapMessages::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_get_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
use anyhow::{anyhow, Result};
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::get::imap::GetImapMessages;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::{flag::add::maildir::AddMaildirFlags, message::peek::maildir::PeekMaildirMessages};
|
||||
use log::info;
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
backend::Backend,
|
||||
config::TomlConfig,
|
||||
envelope::arg::ids::EnvelopeIdArg,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
@@ -66,38 +61,10 @@ impl TemplateReplyCommand {
|
||||
let get_messages_kind = toml_account_config.get_messages_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
get_messages_kind,
|
||||
|#[allow(unused)] builder| match get_messages_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder
|
||||
.set_get_messages(|ctx| ctx.imap.as_ref().map(GetImapMessages::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir.as_ref().map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder
|
||||
.set_add_flags(|ctx| ctx.maildir.as_ref().map(AddMaildirFlags::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_peek_messages(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(PeekMaildirMessages::new_boxed)
|
||||
});
|
||||
builder.set_add_flags(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirFlags::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_get_messages(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,22 +1,14 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
use log::info;
|
||||
use mml::MmlCompilerBuilder;
|
||||
use std::io::{self, BufRead, IsTerminal};
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
email::template::arg::TemplateRawArg,
|
||||
folder::arg::name::FolderNameOptionalFlag,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
email::template::arg::TemplateRawArg, folder::arg::name::FolderNameOptionalFlag,
|
||||
printer::Printer,
|
||||
};
|
||||
|
||||
@@ -57,30 +49,10 @@ impl TemplateSaveCommand {
|
||||
let add_message_kind = toml_account_config.add_message_kind();
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
add_message_kind,
|
||||
|#[allow(unused)] builder| match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| ctx.imap.as_ref().map(AddImapMessage::new_boxed));
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
},
|
||||
|builder| builder.set_add_message(Some(None)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
|
||||
@@ -1,26 +1,14 @@
|
||||
use anyhow::Result;
|
||||
use clap::Parser;
|
||||
#[cfg(feature = "imap")]
|
||||
use email::message::add::imap::AddImapMessage;
|
||||
#[cfg(feature = "maildir")]
|
||||
use email::message::add::maildir::AddMaildirMessage;
|
||||
#[cfg(feature = "sendmail")]
|
||||
use email::message::send::sendmail::SendSendmailMessage;
|
||||
#[cfg(feature = "smtp")]
|
||||
use email::message::send::smtp::SendSmtpMessage;
|
||||
use log::info;
|
||||
use mml::MmlCompilerBuilder;
|
||||
use std::io::{self, BufRead, IsTerminal};
|
||||
|
||||
#[cfg(feature = "account-sync")]
|
||||
use crate::cache::arg::disable::CacheDisableFlag;
|
||||
#[allow(unused)]
|
||||
use crate::{
|
||||
account::arg::name::AccountNameFlag,
|
||||
backend::{Backend, BackendKind},
|
||||
config::TomlConfig,
|
||||
email::template::arg::TemplateRawArg,
|
||||
printer::Printer,
|
||||
account::arg::name::AccountNameFlag, backend::Backend, config::TomlConfig,
|
||||
email::template::arg::TemplateRawArg, printer::Printer,
|
||||
};
|
||||
|
||||
/// Send a template.
|
||||
@@ -55,55 +43,20 @@ impl TemplateSendCommand {
|
||||
let send_message_kind = toml_account_config.send_message_kind();
|
||||
|
||||
#[cfg(feature = "message-add")]
|
||||
let add_message_kind = toml_account_config
|
||||
.add_message_kind()
|
||||
.filter(|_| account_config.should_save_copy_sent_message());
|
||||
#[cfg(not(feature = "message-add"))]
|
||||
let add_message_kind = None;
|
||||
let send_message_kind = send_message_kind.into_iter().chain(
|
||||
toml_account_config
|
||||
.add_message_kind()
|
||||
.filter(|_| account_config.should_save_copy_sent_message()),
|
||||
);
|
||||
|
||||
let backend = Backend::new(
|
||||
&toml_account_config,
|
||||
&account_config,
|
||||
send_message_kind.into_iter().chain(add_message_kind),
|
||||
|#[allow(unused)] builder| {
|
||||
match add_message_kind {
|
||||
#[cfg(feature = "imap")]
|
||||
Some(BackendKind::Imap) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.imap.as_ref().map(AddImapMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "maildir")]
|
||||
Some(BackendKind::Maildir) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir.as_ref().map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "account-sync")]
|
||||
Some(BackendKind::MaildirForSync) => {
|
||||
builder.set_add_message(|ctx| {
|
||||
ctx.maildir_for_sync
|
||||
.as_ref()
|
||||
.map(AddMaildirMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
match send_message_kind {
|
||||
#[cfg(feature = "smtp")]
|
||||
Some(BackendKind::Smtp) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.smtp.as_ref().map(SendSmtpMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
#[cfg(feature = "sendmail")]
|
||||
Some(BackendKind::Sendmail) => {
|
||||
builder.set_send_message(|ctx| {
|
||||
ctx.sendmail.as_ref().map(SendSendmailMessage::new_boxed)
|
||||
});
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
toml_account_config.clone(),
|
||||
account_config.clone(),
|
||||
send_message_kind,
|
||||
|builder| {
|
||||
builder.set_send_message(Some(None));
|
||||
#[cfg(feature = "message-add")]
|
||||
builder.set_add_message(Some(None));
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
|
||||
Reference in New Issue
Block a user