mirror of
https://github.com/soywod/himalaya.git
synced 2024-11-25 12:30:22 +00:00
fix imap credentials and pgp
This commit is contained in:
parent
a5cacb3f67
commit
f24a0475cc
7 changed files with 60 additions and 40 deletions
21
Cargo.lock
generated
21
Cargo.lock
generated
|
@ -1001,7 +1001,7 @@ dependencies = [
|
||||||
"mail-send",
|
"mail-send",
|
||||||
"maildirpp",
|
"maildirpp",
|
||||||
"md5",
|
"md5",
|
||||||
"mml-lib 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"mml-lib",
|
||||||
"notmuch",
|
"notmuch",
|
||||||
"oauth-lib 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"oauth-lib 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
|
@ -2069,7 +2069,7 @@ dependencies = [
|
||||||
"keyring-lib",
|
"keyring-lib",
|
||||||
"log",
|
"log",
|
||||||
"md5",
|
"md5",
|
||||||
"mml-lib 1.0.1",
|
"mml-lib",
|
||||||
"oauth-lib 0.1.0",
|
"oauth-lib 0.1.0",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"process-lib",
|
"process-lib",
|
||||||
|
@ -2687,23 +2687,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mml-lib"
|
name = "mml-lib"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
dependencies = [
|
|
||||||
"async-recursion",
|
|
||||||
"chumsky",
|
|
||||||
"log",
|
|
||||||
"mail-builder",
|
|
||||||
"mail-parser",
|
|
||||||
"nanohtml2text",
|
|
||||||
"shellexpand-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"thiserror",
|
|
||||||
"tree_magic_mini",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "mml-lib"
|
|
||||||
version = "1.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "915efb96feb76c123001341d1631dc06c9bbe14c1a249ef709cf84b341eb8295"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-recursion",
|
"async-recursion",
|
||||||
"chumsky",
|
"chumsky",
|
||||||
|
|
|
@ -25,9 +25,9 @@ imap-backend = ["email-lib/imap-backend"]
|
||||||
notmuch-backend = ["email-lib/notmuch-backend"]
|
notmuch-backend = ["email-lib/notmuch-backend"]
|
||||||
smtp-sender = ["email-lib/smtp-sender"]
|
smtp-sender = ["email-lib/smtp-sender"]
|
||||||
pgp = []
|
pgp = []
|
||||||
pgp-commands = ["pgp", "email-lib/pgp-commands"]
|
pgp-commands = ["pgp", "mml-lib/pgp-commands", "email-lib/pgp-commands"]
|
||||||
pgp-gpg = ["pgp", "email-lib/pgp-gpg"]
|
pgp-gpg = ["pgp", "mml-lib/pgp-gpg", "email-lib/pgp-gpg"]
|
||||||
pgp-native = ["pgp", "email-lib/pgp-native"]
|
pgp-native = ["pgp", "mml-lib/pgp-native", "email-lib/pgp-native"]
|
||||||
|
|
||||||
# dev dependencies
|
# dev dependencies
|
||||||
|
|
||||||
|
@ -107,6 +107,8 @@ version = "=0.1.0"
|
||||||
|
|
||||||
[dependencies.mml-lib]
|
[dependencies.mml-lib]
|
||||||
# version = "=1.0.1"
|
# version = "=1.0.1"
|
||||||
|
default-features = false
|
||||||
|
features = ["compiler", "interpreter"]
|
||||||
path = "/home/soywod/sourcehut/pimalaya/mml"
|
path = "/home/soywod/sourcehut/pimalaya/mml"
|
||||||
|
|
||||||
[dependencies.secret-lib]
|
[dependencies.secret-lib]
|
||||||
|
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2022 soywod <clement.douin@posteo.net>
|
Copyright (c) 2022-2023 soywod <clement.douin@posteo.net>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -162,13 +162,21 @@ impl BackendBuilder {
|
||||||
.map(|mdir_config| MaildirSessionBuilder::new(account_config.clone(), mdir_config)),
|
.map(|mdir_config| MaildirSessionBuilder::new(account_config.clone(), mdir_config)),
|
||||||
|
|
||||||
#[cfg(feature = "imap-backend")]
|
#[cfg(feature = "imap-backend")]
|
||||||
imap: toml_account_config
|
imap: {
|
||||||
|
let ctx_builder = toml_account_config
|
||||||
.imap
|
.imap
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.filter(|_| is_imap_used)
|
.filter(|_| is_imap_used)
|
||||||
.map(|imap_config| {
|
.map(|imap_config| {
|
||||||
ImapSessionBuilder::new(account_config.clone(), imap_config.clone())
|
ImapSessionBuilder::new(account_config.clone(), imap_config.clone())
|
||||||
}),
|
.with_prebuilt_credentials()
|
||||||
|
});
|
||||||
|
|
||||||
|
match ctx_builder {
|
||||||
|
Some(ctx_builder) => Some(ctx_builder.await?),
|
||||||
|
None => None,
|
||||||
|
}
|
||||||
|
},
|
||||||
#[cfg(feature = "notmuch-backend")]
|
#[cfg(feature = "notmuch-backend")]
|
||||||
notmuch: toml_account_config
|
notmuch: toml_account_config
|
||||||
.notmuch
|
.notmuch
|
||||||
|
|
|
@ -537,10 +537,33 @@ pub enum FolderSyncStrategyDef {
|
||||||
|
|
||||||
#[cfg(feature = "pgp")]
|
#[cfg(feature = "pgp")]
|
||||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
|
#[serde(remote = "Option<PgpConfig>", from = "OptionPgpConfig")]
|
||||||
|
pub struct OptionPgpConfigDef;
|
||||||
|
|
||||||
|
#[cfg(feature = "pgp")]
|
||||||
|
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
|
pub struct OptionPgpConfig {
|
||||||
|
#[serde(default, skip)]
|
||||||
|
is_none: bool,
|
||||||
|
#[serde(flatten, with = "PgpConfigDef")]
|
||||||
|
inner: PgpConfig,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "pgp")]
|
||||||
|
impl From<OptionPgpConfig> for Option<PgpConfig> {
|
||||||
|
fn from(config: OptionPgpConfig) -> Option<PgpConfig> {
|
||||||
|
if config.is_none {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(config.inner)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "pgp")]
|
||||||
|
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
#[serde(remote = "PgpConfig", tag = "backend", rename_all = "kebab-case")]
|
#[serde(remote = "PgpConfig", tag = "backend", rename_all = "kebab-case")]
|
||||||
pub enum PgpConfigDef {
|
pub enum PgpConfigDef {
|
||||||
#[default]
|
|
||||||
None,
|
|
||||||
#[cfg(feature = "pgp-commands")]
|
#[cfg(feature = "pgp-commands")]
|
||||||
#[serde(with = "CmdsPgpConfigDef", alias = "commands")]
|
#[serde(with = "CmdsPgpConfigDef", alias = "commands")]
|
||||||
Cmds(CmdsPgpConfig),
|
Cmds(CmdsPgpConfig),
|
||||||
|
|
|
@ -77,10 +77,11 @@ pub async fn save<P: Printer>(
|
||||||
.join("\n")
|
.join("\n")
|
||||||
};
|
};
|
||||||
|
|
||||||
let compiler = MmlCompilerBuilder::new();
|
#[allow(unused_mut)]
|
||||||
|
let mut compiler = MmlCompilerBuilder::new();
|
||||||
|
|
||||||
#[cfg(feature = "pgp")]
|
#[cfg(feature = "pgp")]
|
||||||
let compiler = compiler.with_pgp(config.pgp.clone());
|
compiler.set_some_pgp(config.pgp.clone());
|
||||||
|
|
||||||
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
||||||
|
|
||||||
|
@ -108,10 +109,11 @@ pub async fn send<P: Printer>(
|
||||||
.join("\n")
|
.join("\n")
|
||||||
};
|
};
|
||||||
|
|
||||||
let compiler = MmlCompilerBuilder::new();
|
#[allow(unused_mut)]
|
||||||
|
let mut compiler = MmlCompilerBuilder::new();
|
||||||
|
|
||||||
#[cfg(feature = "pgp")]
|
#[cfg(feature = "pgp")]
|
||||||
let compiler = compiler.with_pgp(config.pgp.clone());
|
compiler.set_some_pgp(config.pgp.clone());
|
||||||
|
|
||||||
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
||||||
|
|
||||||
|
|
|
@ -77,10 +77,11 @@ pub async fn edit_tpl_with_editor<P: Printer>(
|
||||||
Ok(PostEditChoice::Send) => {
|
Ok(PostEditChoice::Send) => {
|
||||||
printer.print_log("Sending email…")?;
|
printer.print_log("Sending email…")?;
|
||||||
|
|
||||||
let compiler = MmlCompilerBuilder::new();
|
#[allow(unused_mut)]
|
||||||
|
let mut compiler = MmlCompilerBuilder::new();
|
||||||
|
|
||||||
#[cfg(feature = "pgp")]
|
#[cfg(feature = "pgp")]
|
||||||
let compiler = compiler.with_pgp(config.pgp.clone());
|
compiler.set_some_pgp(config.pgp.clone());
|
||||||
|
|
||||||
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
||||||
|
|
||||||
|
@ -107,10 +108,11 @@ pub async fn edit_tpl_with_editor<P: Printer>(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Ok(PostEditChoice::RemoteDraft) => {
|
Ok(PostEditChoice::RemoteDraft) => {
|
||||||
let compiler = MmlCompilerBuilder::new();
|
#[allow(unused_mut)]
|
||||||
|
let mut compiler = MmlCompilerBuilder::new();
|
||||||
|
|
||||||
#[cfg(feature = "pgp")]
|
#[cfg(feature = "pgp")]
|
||||||
let compiler = compiler.with_pgp(config.pgp.clone());
|
compiler.set_some_pgp(config.pgp.clone());
|
||||||
|
|
||||||
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue