adjust code from new pimalaya/tui config api

This commit is contained in:
Clément DOUIN
2024-11-21 09:07:22 +01:00
parent d7c4abf2e3
commit 130629309c
30 changed files with 278 additions and 240 deletions
+6 -4
View File
@@ -2,7 +2,6 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::BackendBuilder;
#[cfg(feature = "imap")]
use email::imap::ImapContextBuilder;
#[cfg(feature = "maildir")]
@@ -13,6 +12,7 @@ use email::notmuch::NotmuchContextBuilder;
use email::sendmail::SendmailContextBuilder;
#[cfg(feature = "smtp")]
use email::smtp::SmtpContextBuilder;
use email::{backend::BackendBuilder, config::Config};
use pimalaya_tui::{
himalaya::config::{Backend, SendingBackend},
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -36,11 +36,13 @@ impl AccountCheckUpCommand {
pub async fn execute(self, printer: &mut impl Printer, config: &TomlConfig) -> Result<()> {
info!("executing check up account command");
let account = self.account.name.as_ref().map(String::as_str);
printer.log("Checking configuration integrity…\n")?;
let (toml_account_config, account_config) = config.clone().into_account_configs(account)?;
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
match toml_account_config.backend {
+4 -2
View File
@@ -4,7 +4,7 @@ use ariadne::{Color, Label, Report, ReportKind, Source};
use clap::Parser;
use color_eyre::Result;
use email::{
backend::feature::BackendFeatureSource, email::search_query,
backend::feature::BackendFeatureSource, config::Config, email::search_query,
envelope::list::ListEnvelopesOptions, search_query::SearchEmailsQuery,
};
use pimalaya_tui::{
@@ -142,7 +142,9 @@ impl ListEnvelopesCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let toml_account_config = Arc::new(toml_account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use ariadne::{Label, Report, ReportKind, Source};
use clap::Parser;
use color_eyre::Result;
use email::{
backend::feature::BackendFeatureSource, email::search_query,
backend::feature::BackendFeatureSource, config::Config, email::search_query,
envelope::list::ListEnvelopesOptions, search_query::SearchEmailsQuery,
};
use pimalaya_tui::{
@@ -43,7 +43,9 @@ impl ThreadEnvelopesCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
let folder = &self.folder.name;
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -40,7 +40,9 @@ impl FlagAddCommand {
let (ids, flags) = into_tuple(&self.args.ids_and_flags);
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -40,7 +40,9 @@ impl FlagRemoveCommand {
let (ids, flags) = into_tuple(&self.args.ids_and_flags);
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -40,7 +40,9 @@ impl FlagSetCommand {
let (ids, flags) = into_tuple(&self.args.ids_and_flags);
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
@@ -1,6 +1,6 @@
use clap::Parser;
use color_eyre::{eyre::Context, Result};
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -39,7 +39,9 @@ impl AttachmentDownloadCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -42,7 +42,9 @@ impl MessageCopyCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -41,7 +41,9 @@ impl MessageDeleteCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::{eyre::eyre, Result};
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::{backend::BackendBuilder, editor},
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -49,7 +49,9 @@ impl MessageForwardCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use mail_builder::MessageBuilder;
use pimalaya_tui::{
himalaya::{backend::BackendBuilder, editor},
@@ -42,7 +42,9 @@ impl MessageMailtoCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -43,7 +43,9 @@ impl MessageMoveCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use mml::message::FilterParts;
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
@@ -86,7 +86,9 @@ impl MessageReadCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::{eyre::eyre, Result};
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::{backend::BackendBuilder, editor},
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -51,7 +51,9 @@ impl MessageReplyCommand {
let folder = &self.folder.name;
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -1,6 +1,6 @@
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -39,7 +39,9 @@ impl MessageSaveCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -1,6 +1,6 @@
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -32,7 +32,9 @@ impl MessageSendCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use mml::message::FilterParts;
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
@@ -87,7 +87,9 @@ impl MessageThreadCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+7 -2
View File
@@ -2,7 +2,10 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, message::Message};
use email::{
config::Config,
{backend::feature::BackendFeatureSource, message::Message},
};
use pimalaya_tui::{
himalaya::{backend::BackendBuilder, editor},
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -39,7 +42,9 @@ impl MessageWriteCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::{eyre::eyre, Result};
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -48,7 +48,9 @@ impl TemplateForwardCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::{eyre::eyre, Result};
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -53,7 +53,9 @@ impl TemplateReplyCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -1,6 +1,6 @@
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use mml::MmlCompilerBuilder;
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
@@ -43,7 +43,9 @@ impl TemplateSaveCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+9 -6
View File
@@ -1,15 +1,16 @@
use std::{
io::{self, BufRead, IsTerminal},
sync::Arc,
};
use clap::Parser;
use color_eyre::Result;
use email::backend::feature::BackendFeatureSource;
use email::{backend::feature::BackendFeatureSource, config::Config};
use mml::MmlCompilerBuilder;
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
};
use std::{
io::{self, BufRead, IsTerminal},
sync::Arc,
};
use tracing::info;
use crate::{
@@ -37,7 +38,9 @@ impl TemplateSendCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let account_config = Arc::new(account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::message::Message;
use email::{config::Config, message::Message};
use pimalaya_tui::terminal::{cli::printer::Printer, config::TomlConfig as _};
use tracing::info;
@@ -33,7 +33,9 @@ impl TemplateWriteCommand {
let (_, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let tpl = Message::new_tpl_builder(Arc::new(account_config))
.with_headers(self.headers.raw)
+7 -2
View File
@@ -2,7 +2,10 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, folder::add::AddFolder};
use email::{
config::Config,
{backend::feature::BackendFeatureSource, folder::add::AddFolder},
};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -34,7 +37,9 @@ impl AddFolderCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+7 -2
View File
@@ -2,7 +2,10 @@ use std::{process, sync::Arc};
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, folder::delete::DeleteFolder};
use email::{
config::Config,
{backend::feature::BackendFeatureSource, folder::delete::DeleteFolder},
};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _, prompt},
@@ -41,7 +44,9 @@ impl FolderDeleteCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+6 -2
View File
@@ -2,7 +2,9 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, folder::expunge::ExpungeFolder};
use email::{
backend::feature::BackendFeatureSource, config::Config, folder::expunge::ExpungeFolder,
};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _},
@@ -34,7 +36,9 @@ impl FolderExpungeCommand {
let folder = &self.folder.name;
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),
+7 -2
View File
@@ -2,7 +2,10 @@ use std::sync::Arc;
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, folder::list::ListFolders};
use email::{
config::Config,
{backend::feature::BackendFeatureSource, folder::list::ListFolders},
};
use pimalaya_tui::{
himalaya::{
backend::BackendBuilder,
@@ -37,7 +40,9 @@ impl FolderListCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let toml_account_config = Arc::new(toml_account_config);
+4 -2
View File
@@ -2,7 +2,7 @@ use std::{process, sync::Arc};
use clap::Parser;
use color_eyre::Result;
use email::{backend::feature::BackendFeatureSource, folder::purge::PurgeFolder};
use email::{backend::feature::BackendFeatureSource, config::Config, folder::purge::PurgeFolder};
use pimalaya_tui::{
himalaya::backend::BackendBuilder,
terminal::{cli::printer::Printer, config::TomlConfig as _, prompt},
@@ -41,7 +41,9 @@ impl FolderPurgeCommand {
let (toml_account_config, account_config) = config
.clone()
.into_account_configs(self.account.name.as_deref())?;
.into_account_configs(self.account.name.as_deref(), |c: &Config, name| {
c.account(name).ok()
})?;
let backend = BackendBuilder::new(
Arc::new(toml_account_config),