From cfc88118bbbbe1d02152e879f4001b57da36d890 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Tue, 3 Sep 2024 11:02:23 +0200 Subject: [PATCH] clean unused deps --- Cargo.lock | 12 +- Cargo.toml | 6 +- src/backend/wizard.rs | 2 - src/config/wizard.rs | 318 +----------------------------------------- src/lib.rs | 1 - src/main.rs | 3 + src/tracing.rs | 40 ------ 7 files changed, 10 insertions(+), 372 deletions(-) delete mode 100644 src/tracing.rs diff --git a/Cargo.lock b/Cargo.lock index ea5cc4df..bbc0d944 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -291,9 +291,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", @@ -1232,7 +1232,7 @@ dependencies = [ [[package]] name = "email-lib" version = "0.25.0" -source = "git+https://github.com/pimalaya/core#d61f0e9c6fb26abd0d7f104e6839fcd02ef423bc" +source = "git+https://github.com/pimalaya/core#45efcdc68797efdbdf7ee23a1e77b84ff32c2925" dependencies = [ "async-trait", "chrono", @@ -1896,16 +1896,12 @@ dependencies = [ "process-lib", "secret-lib", "serde", - "serde-toml-merge", "serde_json", "shellexpand-utils", "sled", "tokio", "toml", - "toml_edit 0.22.20", "tracing", - "tracing-error", - "tracing-subscriber", "url", "uuid", ] @@ -2895,7 +2891,7 @@ dependencies = [ [[package]] name = "oauth-lib" version = "0.1.1" -source = "git+https://github.com/pimalaya/core#d61f0e9c6fb26abd0d7f104e6839fcd02ef423bc" +source = "git+https://github.com/pimalaya/core#45efcdc68797efdbdf7ee23a1e77b84ff32c2925" dependencies = [ "log", "oauth2", diff --git a/Cargo.toml b/Cargo.toml index 1d72b7f1..967dc577 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ sendmail = ["email-lib/sendmail", "pimalaya-tui/sendmail"] keyring = ["email-lib/keyring", "pimalaya-tui/keyring", "secret-lib?/keyring-tokio"] oauth2 = ["dep:oauth-lib", "email-lib/oauth2", "pimalaya-tui/oauth2", "keyring"] -wizard = ["dep:email_address", "dep:secret-lib", "dep:toml_edit", "email-lib/autoconfig"] +wizard = ["dep:email_address", "dep:secret-lib", "email-lib/autoconfig"] pgp = [] pgp-commands = ["email-lib/pgp-commands", "mml-lib/pgp-commands", "pgp"] @@ -69,16 +69,12 @@ pimalaya-tui = { version = "=0.1.0", default-features = false, features = ["emai process-lib = { version = "=0.4.2", features = ["derive"] } secret-lib = { version = "=0.4.6", default-features = false, features = ["command", "derive"], optional = true } serde = { version = "1", features = ["derive"] } -serde-toml-merge = "0.3" serde_json = "1" shellexpand-utils = "=0.2.1" sled = "=0.34.7" tokio = { version = "1.23", default-features = false, features = ["macros", "rt-multi-thread"] } toml = "0.8" -toml_edit = { version = "0.22", optional = true } tracing = "0.1.40" -tracing-error = "0.2.0" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } url = "2.2" uuid = { version = "0.8", features = ["v4"] } diff --git a/src/backend/wizard.rs b/src/backend/wizard.rs index 870e8d5e..035742ca 100644 --- a/src/backend/wizard.rs +++ b/src/backend/wizard.rs @@ -60,13 +60,11 @@ pub async fn configure_sender( )?; match backend { - // TODO #[cfg(feature = "smtp")] BackendKind::Smtp => { let config = wizard::smtp::start(account_name, email, autoconfig).await?; Ok(BackendConfig::Smtp(config)) } - // TODO #[cfg(feature = "sendmail")] BackendKind::Sendmail => { let config = wizard::sendmail::start()?; diff --git a/src/config/wizard.rs b/src/config/wizard.rs index 06155aca..ece28a7f 100644 --- a/src/config/wizard.rs +++ b/src/config/wizard.rs @@ -1,8 +1,7 @@ use std::{fs, path::PathBuf}; use color_eyre::Result; -use pimalaya_tui::{print, prompt}; -use toml_edit::{DocumentMut, Table}; +use pimalaya_tui::{config::TomlConfig, print, prompt}; use crate::account; @@ -19,323 +18,10 @@ pub async fn configure(path: &PathBuf) -> Result { let path = prompt::path("Where to save the configuration?", Some(path))?; println!("Writing the configuration to {}…", path.display()); - let toml = pretty_serialize(&config)?; + let toml = config.pretty_serialize()?; fs::create_dir_all(path.parent().unwrap_or(&path))?; fs::write(path, toml)?; println!("Done! Exiting the wizard…"); Ok(config) } - -fn pretty_serialize(config: &Config) -> Result { - let mut doc: DocumentMut = toml::to_string(&config)?.parse()?; - - doc.iter_mut().for_each(|(_, item)| { - if let Some(table) = item.as_table_mut() { - table.iter_mut().for_each(|(_, item)| { - if let Some(table) = item.as_table_mut() { - set_table_dotted(table); - } - }) - } - }); - - Ok(doc.to_string()) -} - -fn set_table_dotted(table: &mut Table) { - let keys: Vec = table.iter().map(|(key, _)| key.to_string()).collect(); - for ref key in keys { - if let Some(table) = table.get_mut(key).unwrap().as_table_mut() { - table.set_dotted(true); - set_table_dotted(table) - } - } -} - -// #[cfg(test)] -// mod test { -// use std::collections::HashMap; - -// use crate::{account::config::TomlAccountConfig, config::TomlConfig}; - -// use super::pretty_serialize; - -// fn assert_eq(config: TomlAccountConfig, expected_toml: &str) { -// let config = TomlConfig { -// accounts: HashMap::from_iter([("test".into(), config)]), -// ..Default::default() -// }; - -// let toml = pretty_serialize(&config).expect("serialize error"); -// assert_eq!(toml, expected_toml); - -// let expected_config = toml::from_str(&toml).expect("deserialize error"); -// assert_eq!(config, expected_config); -// } - -// #[test] -// fn pretty_serialize_default() { -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// "#, -// ) -// } - -// #[cfg(feature = "imap")] -// #[test] -// fn pretty_serialize_imap_passwd_cmd() { -// use email::{ -// account::config::passwd::PasswdConfig, -// imap::config::{ImapAuthConfig, ImapConfig}, -// }; -// use secret::Secret; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// imap: Some(ImapConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command( -// "pass show test", -// ))), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// imap.host = "localhost" -// imap.port = 143 -// imap.login = "test@localhost" -// imap.passwd.command = "pass show test" -// "#, -// ); -// } - -// #[cfg(feature = "imap")] -// #[test] -// fn pretty_serialize_imap_passwd_cmds() { -// use email::{ -// account::config::passwd::PasswdConfig, -// imap::config::{ImapAuthConfig, ImapConfig}, -// }; -// use secret::Secret; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// imap: Some(ImapConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![ -// "pass show test", -// "tr -d '[:blank:]'", -// ]))), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// imap.host = "localhost" -// imap.port = 143 -// imap.login = "test@localhost" -// imap.passwd.command = ["pass show test", "tr -d '[:blank:]'"] -// "#, -// ); -// } - -// #[cfg(feature = "imap")] -// #[test] -// fn pretty_serialize_imap_oauth2() { -// use email::{ -// account::config::oauth2::OAuth2Config, -// imap::config::{ImapAuthConfig, ImapConfig}, -// }; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// imap: Some(ImapConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: ImapAuthConfig::OAuth2(OAuth2Config { -// client_id: "client-id".into(), -// auth_url: "auth-url".into(), -// token_url: "token-url".into(), -// ..Default::default() -// }), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// imap.host = "localhost" -// imap.port = 143 -// imap.login = "test@localhost" -// imap.oauth2.method = "xoauth2" -// imap.oauth2.client-id = "client-id" -// imap.oauth2.auth-url = "auth-url" -// imap.oauth2.token-url = "token-url" -// imap.oauth2.pkce = false -// imap.oauth2.scopes = [] -// "#, -// ); -// } - -// #[cfg(feature = "maildir")] -// #[test] -// fn pretty_serialize_maildir() { -// use email::maildir::config::MaildirConfig; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// maildir: Some(MaildirConfig { -// root_dir: "/tmp/test".into(), -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// maildir.root-dir = "/tmp/test" -// "#, -// ); -// } - -// #[cfg(feature = "smtp")] -// #[test] -// fn pretty_serialize_smtp_passwd_cmd() { -// use email::{ -// account::config::passwd::PasswdConfig, -// smtp::config::{SmtpAuthConfig, SmtpConfig}, -// }; -// use secret::Secret; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// smtp: Some(SmtpConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command( -// "pass show test", -// ))), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// smtp.host = "localhost" -// smtp.port = 143 -// smtp.login = "test@localhost" -// smtp.passwd.command = "pass show test" -// "#, -// ); -// } - -// #[cfg(feature = "smtp")] -// #[test] -// fn pretty_serialize_smtp_passwd_cmds() { -// use email::{ -// account::config::passwd::PasswdConfig, -// smtp::config::{SmtpAuthConfig, SmtpConfig}, -// }; -// use secret::Secret; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// smtp: Some(SmtpConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![ -// "pass show test", -// "tr -d '[:blank:]'", -// ]))), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// smtp.host = "localhost" -// smtp.port = 143 -// smtp.login = "test@localhost" -// smtp.passwd.command = ["pass show test", "tr -d '[:blank:]'"] -// "#, -// ); -// } - -// #[cfg(feature = "smtp")] -// #[test] -// fn pretty_serialize_smtp_oauth2() { -// use email::{ -// account::config::oauth2::OAuth2Config, -// smtp::config::{SmtpAuthConfig, SmtpConfig}, -// }; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// smtp: Some(SmtpConfig { -// host: "localhost".into(), -// port: 143, -// login: "test@localhost".into(), -// auth: SmtpAuthConfig::OAuth2(OAuth2Config { -// client_id: "client-id".into(), -// auth_url: "auth-url".into(), -// token_url: "token-url".into(), -// ..Default::default() -// }), -// ..Default::default() -// }), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// smtp.host = "localhost" -// smtp.port = 143 -// smtp.login = "test@localhost" -// smtp.oauth2.method = "xoauth2" -// smtp.oauth2.client-id = "client-id" -// smtp.oauth2.auth-url = "auth-url" -// smtp.oauth2.token-url = "token-url" -// smtp.oauth2.pkce = false -// smtp.oauth2.scopes = [] -// "#, -// ); -// } - -// #[cfg(feature = "pgp-cmds")] -// #[test] -// fn pretty_serialize_pgp_cmds() { -// use email::account::config::pgp::PgpConfig; - -// assert_eq( -// TomlAccountConfig { -// email: "test@localhost".into(), -// pgp: Some(PgpConfig::Cmds(Default::default())), -// ..Default::default() -// }, -// r#"[accounts.test] -// email = "test@localhost" -// pgp.backend = "cmds" -// "#, -// ); -// } -// } diff --git a/src/lib.rs b/src/lib.rs index 4d9232c3..45ccab8d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,7 +9,6 @@ pub mod folder; pub mod manual; pub mod output; pub mod printer; -pub mod tracing; pub mod ui; #[doc(inline)] diff --git a/src/main.rs b/src/main.rs index 5ce7e4eb..bc121067 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,6 +10,9 @@ use pimalaya_tui::cli::tracing; async fn main() -> Result<()> { let tracing = tracing::install()?; + #[cfg(feature = "keyring")] + secret::keyring::set_global_service_name("himalaya-cli"); + // if the first argument starts by "mailto:", execute straight the // mailto message command let mailto = std::env::args() diff --git a/src/tracing.rs b/src/tracing.rs deleted file mode 100644 index fb3b92e2..00000000 --- a/src/tracing.rs +++ /dev/null @@ -1,40 +0,0 @@ -use color_eyre::eyre::Result; -use std::env; -use tracing_error::ErrorLayer; -use tracing_subscriber::{filter::LevelFilter, fmt, prelude::*, EnvFilter}; - -pub fn install() -> Result { - let fmt_layer = fmt::layer(); - - let (filter_layer, current_filter) = match EnvFilter::try_from_default_env() { - Err(_) => (EnvFilter::try_new("off").unwrap(), LevelFilter::OFF), - Ok(layer) => { - let level = layer.max_level_hint().unwrap_or(LevelFilter::OFF); - (layer, level) - } - }; - - let registry = tracing_subscriber::registry() - .with(filter_layer) - .with(ErrorLayer::default()); - - if current_filter == LevelFilter::OFF { - registry.with(fmt_layer.without_time()).init() - } else { - registry.with(fmt_layer).init() - } - - if env::var("RUST_BACKTRACE").is_err() && current_filter == LevelFilter::TRACE { - env::set_var("RUST_BACKTRACE", "1"); - } - - let debug = current_filter >= LevelFilter::DEBUG; - - color_eyre::config::HookBuilder::new() - .capture_span_trace_by_default(debug) - .display_location_section(debug) - .display_env_section(false) - .install()?; - - Ok(current_filter) -}