bump pimalaya core v1

This commit is contained in:
Clément DOUIN
2024-10-24 15:21:13 +02:00
parent a0dea19cdf
commit 3b271c3e67
7 changed files with 501 additions and 781 deletions
+57 -45
View File
@@ -13,7 +13,10 @@ use email::notmuch::NotmuchContextBuilder;
use email::sendmail::SendmailContextBuilder;
#[cfg(feature = "smtp")]
use email::smtp::SmtpContextBuilder;
use pimalaya_tui::terminal::{cli::printer::Printer, config::TomlConfig as _};
use pimalaya_tui::{
himalaya::config::{Backend, SendingBackend},
terminal::{cli::printer::Printer, config::TomlConfig as _},
};
use tracing::info;
use crate::{account::arg::name::OptionalAccountNameArg, config::TomlConfig};
@@ -42,56 +45,65 @@ impl AccountCheckUpCommand {
printer.log("Checking backend context integrity…")?;
#[cfg(feature = "maildir")]
if let Some(mdir_config) = toml_account_config.maildir {
printer.log("Checking Maildir integrity…")?;
match toml_account_config.backend {
#[cfg(feature = "maildir")]
Some(Backend::Maildir(mdir_config)) => {
printer.log("Checking Maildir integrity…")?;
let ctx = MaildirContextBuilder::new(account_config.clone(), Arc::new(mdir_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
let ctx = MaildirContextBuilder::new(account_config.clone(), Arc::new(mdir_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
#[cfg(feature = "imap")]
Some(Backend::Imap(imap_config)) => {
printer.log("Checking IMAP integrity…")?;
let ctx = ImapContextBuilder::new(account_config.clone(), Arc::new(imap_config))
.with_pool_size(1);
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
#[cfg(feature = "notmuch")]
Some(Backend::Notmuch(notmuch_config)) => {
printer.log("Checking Notmuch integrity…")?;
let ctx =
NotmuchContextBuilder::new(account_config.clone(), Arc::new(notmuch_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
_ => (),
}
#[cfg(feature = "imap")]
if let Some(imap_config) = toml_account_config.imap {
printer.log("Checking IMAP integrity…")?;
let sending_backend = toml_account_config
.message
.and_then(|msg| msg.send)
.and_then(|send| send.backend);
let ctx = ImapContextBuilder::new(account_config.clone(), Arc::new(imap_config))
.with_pool_size(1);
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
match sending_backend {
#[cfg(feature = "smtp")]
Some(SendingBackend::Smtp(smtp_config)) => {
printer.log("Checking Smtp integrity…")?;
#[cfg(feature = "notmuch")]
if let Some(notmuch_config) = toml_account_config.notmuch {
printer.log("Checking Notmuch integrity…")?;
let ctx = SmtpContextBuilder::new(account_config.clone(), Arc::new(smtp_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
#[cfg(feature = "sendmail")]
Some(SendingBackend::Sendmail(sendmail_config)) => {
printer.log("Checking Sendmail integrity…")?;
let ctx = NotmuchContextBuilder::new(account_config.clone(), Arc::new(notmuch_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
#[cfg(feature = "smtp")]
if let Some(smtp_config) = toml_account_config.smtp {
printer.log("Checking SMTP integrity…")?;
let ctx = SmtpContextBuilder::new(account_config.clone(), Arc::new(smtp_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
#[cfg(feature = "sendmail")]
if let Some(sendmail_config) = toml_account_config.sendmail {
printer.log("Checking Sendmail integrity…")?;
let ctx =
SendmailContextBuilder::new(account_config.clone(), Arc::new(sendmail_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
let ctx =
SendmailContextBuilder::new(account_config.clone(), Arc::new(sendmail_config));
BackendBuilder::new(account_config.clone(), ctx)
.check_up()
.await?;
}
_ => (),
}
printer.out("Checkup successfully completed!")
+43 -43
View File
@@ -40,13 +40,14 @@ impl AccountConfigureCommand {
if self.reset {
#[cfg(feature = "imap")]
if let Some(config) = &toml_account_config.imap {
let reset = match &config.auth {
ImapAuthConfig::Passwd(config) => config.reset().await,
{
let reset = match toml_account_config.imap_auth_config() {
Some(ImapAuthConfig::Password(config)) => config.reset().await,
#[cfg(feature = "oauth2")]
ImapAuthConfig::OAuth2(config) => config.reset().await,
ImapAuthConfig::MissingOAuth2Feature => unreachable!(),
Some(ImapAuthConfig::OAuth2(config)) => config.reset().await,
_ => Ok(()),
};
if let Err(err) = reset {
warn!("error while resetting imap secrets: {err}");
debug!("error while resetting imap secrets: {err:?}");
@@ -54,12 +55,14 @@ impl AccountConfigureCommand {
}
#[cfg(feature = "smtp")]
if let Some(config) = &toml_account_config.smtp {
let reset = match &config.auth {
SmtpAuthConfig::Passwd(config) => config.reset().await,
{
let reset = match toml_account_config.smtp_auth_config() {
Some(SmtpAuthConfig::Passwd(config)) => config.reset().await,
#[cfg(feature = "oauth2")]
SmtpAuthConfig::OAuth2(config) => config.reset().await,
Some(SmtpAuthConfig::OAuth2(config)) => config.reset().await,
_ => Ok(()),
};
if let Err(err) = reset {
warn!("error while resetting smtp secrets: {err}");
debug!("error while resetting smtp secrets: {err:?}");
@@ -67,50 +70,47 @@ impl AccountConfigureCommand {
}
#[cfg(feature = "pgp")]
if let Some(ref config) = account_config.pgp {
if let Some(config) = &toml_account_config.pgp {
config.reset().await?;
}
}
#[cfg(feature = "imap")]
if let Some(config) = &toml_account_config.imap {
match &config.auth {
ImapAuthConfig::Passwd(config) => {
config
.configure(|| Ok(prompt::password("IMAP password")?))
.await
}
#[cfg(feature = "oauth2")]
ImapAuthConfig::OAuth2(config) => {
config
.configure(|| Ok(prompt::secret("IMAP OAuth 2.0 clientsecret")?))
.await
}
ImapAuthConfig::MissingOAuth2Feature => unreachable!(),
}?;
}
match toml_account_config.imap_auth_config() {
Some(ImapAuthConfig::Password(config)) => {
config
.configure(|| Ok(prompt::password("IMAP password")?))
.await
}
#[cfg(feature = "oauth2")]
Some(ImapAuthConfig::OAuth2(config)) => {
config
.configure(|| Ok(prompt::secret("IMAP OAuth 2.0 client secret")?))
.await
}
_ => Ok(()),
}?;
#[cfg(feature = "smtp")]
if let Some(config) = &toml_account_config.smtp {
match &config.auth {
SmtpAuthConfig::Passwd(config) => {
config
.configure(|| Ok(prompt::password("SMTP password")?))
.await
}
#[cfg(feature = "oauth2")]
SmtpAuthConfig::OAuth2(config) => {
config
.configure(|| Ok(prompt::secret("SMTP OAuth 2.0 client secret")?))
.await
}
}?;
}
match toml_account_config.smtp_auth_config() {
Some(SmtpAuthConfig::Passwd(config)) => {
config
.configure(|| Ok(prompt::password("SMTP password")?))
.await
}
#[cfg(feature = "oauth2")]
Some(SmtpAuthConfig::OAuth2(config)) => {
config
.configure(|| Ok(prompt::secret("SMTP OAuth 2.0 client secret")?))
.await
}
_ => Ok(()),
}?;
#[cfg(feature = "pgp")]
if let Some(ref config) = account_config.pgp {
if let Some(config) = &toml_account_config.pgp {
config
.configure(&account_config.email, || {
.configure(&toml_account_config.email, || {
Ok(prompt::password("PGP secret key password")?)
})
.await?;
-1
View File
@@ -1,4 +1,3 @@
#[cfg(feature = "wizard")]
use pimalaya_tui::himalaya::config::HimalayaTomlConfig;
pub type TomlConfig = HimalayaTomlConfig;
+3 -1
View File
@@ -45,9 +45,11 @@ impl TemplateSaveCommand {
.clone()
.into_account_configs(self.account.name.as_deref())?;
let account_config = Arc::new(account_config);
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
Arc::new(account_config),
account_config.clone(),
|builder| {
builder
.without_features()
+3 -1
View File
@@ -39,9 +39,11 @@ impl TemplateSendCommand {
.clone()
.into_account_configs(self.account.name.as_deref())?;
let account_config = Arc::new(account_config);
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
Arc::new(account_config),
account_config.clone(),
|builder| {
builder
.without_features()