From 56fc31b36728e92874cdb8bbdd83ed14ee46dd8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Mon, 25 Sep 2023 15:32:29 +0200 Subject: [PATCH] bump mml-lib@v0.5.0 and email-lib@v0.15.3 --- Cargo.lock | 431 +++++++++------------------------ Cargo.toml | 31 ++- src/config/prelude.rs | 5 +- src/domain/account/config.rs | 7 +- src/domain/account/handlers.rs | 2 + src/domain/email/handlers.rs | 3 +- src/domain/tpl/handlers.rs | 30 +-- src/ui/editor.rs | 29 ++- 8 files changed, 176 insertions(+), 362 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7e036cd..1b1f4de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -30,7 +30,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "433cfd6710c9986c576a25ca913c39d66a6474107b406f34f91d4a8923395241" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher", "cpufeatures", ] @@ -61,7 +61,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "getrandom 0.2.8", "once_cell", "version_check", @@ -73,7 +73,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" dependencies = [ - "memchr 2.5.0", + "memchr", ] [[package]] @@ -82,19 +82,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" -[[package]] -name = "ammonia" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e6d1c7838db705c9b756557ee27c384ce695a1c51a6fe528784cb1c6840170" -dependencies = [ - "html5ever", - "maplit", - "once_cell", - "tendril", - "url", -] - [[package]] name = "android_system_properties" version = "0.1.5" @@ -231,7 +218,7 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" dependencies = [ - "memchr 2.5.0", + "memchr", "regex-automata", "serde", ] @@ -242,7 +229,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2886ea01509598caac116942abd33ab5a88fa32acdf7e4abfa0fc489ca520c9" dependencies = [ - "memchr 2.5.0", + "memchr", "safemem", ] @@ -264,6 +251,12 @@ version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +[[package]] +name = "bytecount" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" + [[package]] name = "byteorder" version = "1.4.3" @@ -344,12 +337,6 @@ dependencies = [ "target-lexicon", ] -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.0" @@ -393,11 +380,11 @@ dependencies = [ [[package]] name = "chumsky" -version = "0.9.0" +version = "1.0.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4d619fba796986dd538d82660b76e0b9756c6e19b2e4d4559ba5a57f9f00810" +checksum = "cc3172a80699de358070dd99f80ea8badc6cdf8ac2417cb5a96e6d81bf5fe06d" dependencies = [ - "hashbrown", + "hashbrown 0.13.2", "stacker", ] @@ -452,15 +439,6 @@ dependencies = [ "roff", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "codespan-reporting" version = "0.11.1" @@ -580,7 +558,7 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -589,7 +567,7 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", ] @@ -599,7 +577,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] @@ -611,7 +589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", - "cfg-if 1.0.0", + "cfg-if", "crossbeam-utils", "memoffset", "scopeguard", @@ -623,7 +601,7 @@ version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -660,8 +638,8 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40" dependencies = [ - "cfg-if 1.0.0", - "memchr 2.5.0", + "cfg-if", + "memchr", ] [[package]] @@ -683,7 +661,7 @@ version = "4.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436ace70fc06e06f7f689d2624dc4e2f0ea666efb5aa704215f7249ae6e047a7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "curve25519-dalek-derive", "digest 0.10.6", @@ -1000,18 +978,16 @@ dependencies = [ [[package]] name = "email-lib" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "466e49f407767ae105ac1821997b272bf63f8d06e67892582ff71a991dfc8852" +checksum = "479ea77debd2ffe4299a58f5a4718d13d1b97faef45555f9ec3cb3db74721076" dependencies = [ "advisory-lock", - "ammonia", "async-trait", "chrono", "convert_case", "dirs", "futures", - "html-escape", "imap", "imap-proto", "keyring-lib", @@ -1039,7 +1015,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls 0.24.0", - "tree_magic", + "tree_magic_mini", "urlencoding", "utf7-imap", "uuid", @@ -1067,7 +1043,7 @@ version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1095,6 +1071,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + [[package]] name = "erased-serde" version = "0.3.23" @@ -1164,9 +1146,9 @@ checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" [[package]] name = "fixedbitset" -version = "0.2.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" @@ -1214,16 +1196,6 @@ dependencies = [ "syn 1.0.104", ] -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - [[package]] name = "futures" version = "0.3.25" @@ -1307,7 +1279,7 @@ dependencies = [ "futures-macro", "futures-sink", "futures-task", - "memchr 2.5.0", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1340,7 +1312,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "wasi 0.9.0+wasi-snapshot-preview1", ] @@ -1351,7 +1323,7 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -1374,7 +1346,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57539732fbe58eacdb984734b72b470ed0bca3ab7a49813271878567025ac44f" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "conv", "cstr-argument", "gpg-error", @@ -1422,7 +1394,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.2", "slab", "tokio", "tokio-util", @@ -1438,13 +1410,28 @@ dependencies = [ "ahash 0.7.6", ] +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "hashlink" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" dependencies = [ - "hashbrown", + "hashbrown 0.12.3", ] [[package]] @@ -1549,29 +1536,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "html-escape" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15315cfa9503e9aa85a477138eff76a1b203a430703548052c330b69d8d8c205" -dependencies = [ - "utf8-width", -] - -[[package]] -name = "html5ever" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.104", -] - [[package]] name = "http" version = "0.2.9" @@ -1736,7 +1700,7 @@ dependencies = [ "chrono", "imap-proto", "lazy_static", - "nom 7.1.1", + "nom", "ouroboros", "regex", "rustls-connector", @@ -1748,7 +1712,7 @@ version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f73b1b63179418b20aa81002d616c5f21b4ba257da9bca6989ea64dc573933e0" dependencies = [ - "nom 7.1.1", + "nom", ] [[package]] @@ -1758,7 +1722,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", ] [[package]] @@ -1788,7 +1762,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1962,15 +1936,6 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" -[[package]] -name = "lock_api" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" -dependencies = [ - "scopeguard", -] - [[package]] name = "lock_api" version = "0.4.9" @@ -1987,7 +1952,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1999,12 +1964,6 @@ dependencies = [ "linked-hash-map", ] -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - [[package]] name = "mail-auth" version = "0.3.2" @@ -2016,7 +1975,7 @@ dependencies = [ "lru-cache", "mail-builder", "mail-parser", - "parking_lot 0.12.1", + "parking_lot", "quick-xml", "ring", "rustls-pemfile", @@ -2074,26 +2033,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "markup5ever" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" -dependencies = [ - "log", - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - [[package]] name = "match_cfg" version = "0.1.0" @@ -2121,15 +2060,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" -[[package]] -name = "memchr" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "148fab2e51b4f1cfc66da2a7c32981d1d3c083a803978268bb11fe4b86925e7a" -dependencies = [ - "libc", -] - [[package]] name = "memchr" version = "2.5.0" @@ -2180,12 +2110,12 @@ dependencies = [ [[package]] name = "mml-lib" -version = "0.2.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9ebec291020a02ef208ca54491b44a929c93c93dcd47be594fc3843ece0104b" +checksum = "5d3d0041c291179f654d5e256a8473415dfea8fc055e8c51358a3c99dac2cf9e" dependencies = [ "async-recursion", - "chumsky 0.9.0", + "chumsky 1.0.0-alpha.4", "gpgme", "keyring-lib", "log", @@ -2197,7 +2127,7 @@ dependencies = [ "secret-lib", "shellexpand-utils", "thiserror", - "tree_magic", + "tree_magic_mini", ] [[package]] @@ -2206,28 +2136,13 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "999681fe3c0524336e98ece1c25ee4278607f25cc1e361ad0f9201c8bf56dc2c" -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nom" -version = "3.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aec50c70fd288702bcd93284a8444607f3292dbdf2a30de5ea5dcdbe72287b" -dependencies = [ - "memchr 1.0.2", -] - [[package]] name = "nom" version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" dependencies = [ - "memchr 2.5.0", + "memchr", "minimal-lexical", ] @@ -2369,7 +2284,7 @@ version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" dependencies = [ - "memchr 2.5.0", + "memchr", ] [[package]] @@ -2419,38 +2334,14 @@ dependencies = [ "sha2", ] -[[package]] -name = "parking_lot" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" -dependencies = [ - "lock_api 0.3.4", - "parking_lot_core 0.7.2", -] - [[package]] name = "parking_lot" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api 0.4.9", - "parking_lot_core 0.9.5", -] - -[[package]] -name = "parking_lot_core" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" -dependencies = [ - "cfg-if 0.1.10", - "cloudabi", - "libc", - "redox_syscall 0.1.57", - "smallvec", - "winapi", + "lock_api", + "parking_lot_core", ] [[package]] @@ -2459,9 +2350,9 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "smallvec", "windows-sys 0.42.0", ] @@ -2506,12 +2397,12 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "petgraph" -version = "0.5.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap", + "indexmap 2.0.0", ] [[package]] @@ -2545,7 +2436,7 @@ dependencies = [ "idea", "log", "md-5", - "nom 7.1.1", + "nom", "num-bigint-dig", "num-derive", "num-traits", @@ -2586,44 +2477,6 @@ dependencies = [ "z-base-32", ] -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - [[package]] name = "pin-project-lite" version = "0.2.9" @@ -2681,12 +2534,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - [[package]] name = "primeorder" version = "0.13.2" @@ -2767,7 +2614,7 @@ version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" dependencies = [ - "memchr 2.5.0", + "memchr", ] [[package]] @@ -2846,12 +2693,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "redox_syscall" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - [[package]] name = "redox_syscall" version = "0.2.16" @@ -2868,7 +2709,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom 0.2.8", - "redox_syscall 0.2.16", + "redox_syscall", "thiserror", ] @@ -2879,7 +2720,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81ca098a9821bd52d6b24fd8b10bd081f47d39c22778cafaa75a2857a62c6390" dependencies = [ "aho-corasick", - "memchr 2.5.0", + "memchr", "regex-syntax", ] @@ -2962,7 +2803,7 @@ dependencies = [ "base64 0.13.1", "charset", "chumsky 0.8.0", - "memchr 2.5.0", + "memchr", "quoted_printable", "thiserror", ] @@ -3298,7 +3139,7 @@ version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.6", ] @@ -3309,7 +3150,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.6", ] @@ -3365,12 +3206,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - [[package]] name = "slab" version = "0.4.7" @@ -3425,7 +3260,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" dependencies = [ "cc", - "cfg-if 1.0.0", + "cfg-if", "libc", "psm", "winapi", @@ -3437,32 +3272,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string_cache" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot 0.12.1", - "phf_shared", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - [[package]] name = "strsim" version = "0.9.3" @@ -3528,25 +3337,14 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "remove_dir_all", "winapi", ] -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - [[package]] name = "termcolor" version = "1.1.3" @@ -3646,7 +3444,7 @@ dependencies = [ "autocfg", "bytes", "libc", - "memchr 2.5.0", + "memchr", "mio", "num_cpus", "pin-project-lite", @@ -3729,7 +3527,7 @@ version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92d964908cec0d030b812013af25a0e57fddfadb1e066ecc6681d86253129d4f" dependencies = [ - "indexmap", + "indexmap 1.9.2", "serde", "serde_spanned", "toml_datetime", @@ -3748,7 +3546,7 @@ version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3775,15 +3573,16 @@ dependencies = [ ] [[package]] -name = "tree_magic" -version = "0.2.3" +name = "tree_magic_mini" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d99367ce3e553a84738f73bd626ccca541ef90ae757fdcdc4cbe728e6cb629" +checksum = "91adfd0607cacf6e4babdb870e9bec4037c1c4b151cfd279ccefc5e0c7feaa6d" dependencies = [ + "bytecount", "fnv", "lazy_static", - "nom 3.2.1", - "parking_lot 0.10.2", + "nom", + "once_cell", "petgraph", ] @@ -3794,7 +3593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26" dependencies = [ "async-trait", - "cfg-if 1.0.0", + "cfg-if", "data-encoding", "enum-as-inner", "futures-channel", @@ -3823,12 +3622,12 @@ version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "futures-util", "ipconfig", "lazy_static", "lru-cache", - "parking_lot 0.12.1", + "parking_lot", "resolv-conf", "rustls 0.20.8", "smallvec", @@ -3912,12 +3711,6 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - [[package]] name = "utf7-imap" version = "0.3.2" @@ -3929,12 +3722,6 @@ dependencies = [ "regex", ] -[[package]] -name = "utf8-width" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5190c9442dcdaf0ddd50f37420417d219ae5261bbf5db120d0f9bab996c9cba1" - [[package]] name = "uuid" version = "0.8.2" @@ -3996,7 +3783,7 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen-macro", ] @@ -4021,7 +3808,7 @@ version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "wasm-bindgen", "web-sys", @@ -4252,7 +4039,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" dependencies = [ - "memchr 2.5.0", + "memchr", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ae46c65..2a6eb22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,25 +7,29 @@ edition = "2021" license = "MIT" categories = ["command-line-interface", "command-line-utilities", "email"] keywords = ["cli", "mail", "email", "client", "imap"] -homepage = "https://pimalaya.org/" +homepage = "https://pimalaya.org/himalaya" documentation = "https://pimalaya.org/himalaya/" repository = "https://github.com/soywod/himalaya/" metadata.docs.rs.all-features = true [features] -default = ["imap-backend", "smtp-sender", "pgp-commands"] - -# backends +default = [ + "imap-backend", + # "notmuch-backend", + "smtp-sender", + # "pgp-commands", + # "pgp-gpg", + # "pgp-native", +] imap-backend = ["email-lib/imap-backend"] notmuch-backend = ["email-lib/notmuch-backend"] - -# senders smtp-sender = ["email-lib/smtp-sender"] +pgp = [] +pgp-commands = ["pgp", "email-lib/pgp-commands"] +pgp-gpg = ["pgp", "email-lib/pgp-gpg"] +pgp-native = ["pgp", "email-lib/pgp-native"] -# pgp -pgp-commands = ["email-lib/pgp-commands"] -pgp-gpg = ["email-lib/pgp-gpg"] -pgp-native = ["email-lib/pgp-native"] +# dev dependencies [dev-dependencies.async-trait] version = "0.1" @@ -33,6 +37,8 @@ version = "0.1" [dev-dependencies.tempfile] version = "3.3" +# dependencies + [dependencies.anyhow] version = "1.0" @@ -82,7 +88,7 @@ version = "0.7.0" version = "1.16.0" [dependencies.email-lib] -version = "=0.15.2" +version = "=0.15.3" default-features = false [dependencies.keyring-lib] @@ -95,7 +101,8 @@ version = "=0.1.0" version = "=0.1.0" [dependencies.mml-lib] -version = "=0.2.3" +version = "=0.5.0" +default-features = false [dependencies.secret-lib] version = "=0.1.0" diff --git a/src/config/prelude.rs b/src/config/prelude.rs index 492b211..1e5f783 100644 --- a/src/config/prelude.rs +++ b/src/config/prelude.rs @@ -2,6 +2,8 @@ use email::account::CmdsPgpConfig; #[cfg(feature = "pgp-gpg")] use email::account::GpgConfig; +#[cfg(feature = "pgp")] +use email::account::PgpConfig; #[cfg(feature = "pgp-native")] use email::account::{NativePgpConfig, NativePgpSecretKey, SignedSecretKey}; #[cfg(feature = "notmuch-backend")] @@ -11,7 +13,7 @@ use email::backend::{ImapAuthConfig, ImapConfig}; #[cfg(feature = "smtp-sender")] use email::sender::{SmtpAuthConfig, SmtpConfig}; use email::{ - account::{OAuth2Config, OAuth2Method, OAuth2Scopes, PasswdConfig, PgpConfig}, + account::{OAuth2Config, OAuth2Method, OAuth2Scopes, PasswdConfig}, backend::{BackendConfig, MaildirConfig}, email::{EmailHooks, EmailTextPlainFormat}, folder::sync::FolderSyncStrategy, @@ -402,6 +404,7 @@ pub enum FolderSyncStrategyDef { Exclude(HashSet), } +#[cfg(feature = "pgp")] #[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)] #[serde(remote = "PgpConfig", tag = "backend", rename_all = "kebab-case")] pub enum PgpConfigDef { diff --git a/src/domain/account/config.rs b/src/domain/account/config.rs index 4b1a54f..05017a8 100644 --- a/src/domain/account/config.rs +++ b/src/domain/account/config.rs @@ -3,17 +3,20 @@ //! This module contains the raw deserialized representation of an //! account in the accounts section of the user configuration file. +#[cfg(feature = "pgp")] +use email::account::PgpConfig; #[cfg(feature = "imap-backend")] use email::backend::ImapAuthConfig; #[cfg(feature = "smtp-sender")] use email::sender::SmtpAuthConfig; use email::{ - account::{AccountConfig, PgpConfig}, + account::AccountConfig, backend::BackendConfig, email::{EmailHooks, EmailTextPlainFormat}, folder::sync::FolderSyncStrategy, sender::SenderConfig, }; + use process::Cmd; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, path::PathBuf}; @@ -91,6 +94,7 @@ pub struct DeserializedAccountConfig { #[serde(flatten, with = "SenderConfigDef")] pub sender: SenderConfig, + #[cfg(feature = "pgp")] #[serde(default, with = "PgpConfigDef")] pub pgp: PgpConfig, } @@ -221,6 +225,7 @@ impl DeserializedAccountConfig { sender }, + #[cfg(feature = "pgp")] pgp: self.pgp.clone(), } } diff --git a/src/domain/account/handlers.rs b/src/domain/account/handlers.rs index ab84df4..56c0a7e 100644 --- a/src/domain/account/handlers.rs +++ b/src/domain/account/handlers.rs @@ -73,6 +73,7 @@ pub async fn configure(config: &AccountConfig, reset: bool) -> Result<()> { } } + #[cfg(feature = "pgp")] config.pgp.reset().await?; } @@ -104,6 +105,7 @@ pub async fn configure(config: &AccountConfig, reset: bool) -> Result<()> { }?; } + #[cfg(feature = "pgp")] config .pgp .configure(&config.email, || prompt_passwd("PGP secret key password")) diff --git a/src/domain/email/handlers.rs b/src/domain/email/handlers.rs index 8d5bd51..cc6f276 100644 --- a/src/domain/email/handlers.rs +++ b/src/domain/email/handlers.rs @@ -186,7 +186,8 @@ pub async fn mailto( let tpl = config .generate_tpl_interpreter() .with_show_only_headers(config.email_writing_headers()) - .interpret_msg_builder(builder) + .build() + .from_msg_builder(builder) .await?; editor::edit_tpl_with_editor(config, printer, backend, sender, tpl).await diff --git a/src/domain/tpl/handlers.rs b/src/domain/tpl/handlers.rs index 131280c..a682930 100644 --- a/src/domain/tpl/handlers.rs +++ b/src/domain/tpl/handlers.rs @@ -6,7 +6,7 @@ use email::{ email::{Flag, Flags, Message}, sender::Sender, }; -use mml::MmlCompiler; +use mml::MmlCompilerBuilder; use std::io::{stdin, BufRead}; use crate::{printer::Printer, IdMapper}; @@ -70,14 +70,14 @@ pub async fn reply( } pub async fn save( - config: &AccountConfig, + #[allow(unused_variables)] config: &AccountConfig, printer: &mut P, id_mapper: &IdMapper, backend: &mut dyn Backend, folder: &str, tpl: String, ) -> Result<()> { - let mml = if atty::is(Stream::Stdin) || printer.is_json() { + let tpl = if atty::is(Stream::Stdin) || printer.is_json() { tpl.replace("\r", "") } else { stdin() @@ -88,11 +88,12 @@ pub async fn save( .join("\n") }; - let email = MmlCompiler::new() - .with_pgp(config.pgp.clone()) - .compile(mml) - .await? - .write_to_vec()?; + let compiler = MmlCompilerBuilder::new(); + + #[cfg(feature = "pgp")] + let compiler = compiler.with_pgp(config.pgp.clone()); + + let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?; let id = backend.add_email(folder, &email, &Flags::default()).await?; id_mapper.create_alias(id)?; @@ -109,7 +110,7 @@ pub async fn send( ) -> Result<()> { let folder = config.sent_folder_alias()?; - let mml = if atty::is(Stream::Stdin) || printer.is_json() { + let tpl = if atty::is(Stream::Stdin) || printer.is_json() { tpl.replace("\r", "") } else { stdin() @@ -120,11 +121,12 @@ pub async fn send( .join("\n") }; - let email = MmlCompiler::new() - .with_pgp(config.pgp.clone()) - .compile(mml) - .await? - .write_to_vec()?; + let compiler = MmlCompilerBuilder::new(); + + #[cfg(feature = "pgp")] + let compiler = compiler.with_pgp(config.pgp.clone()); + + let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?; sender.send(&email).await?; diff --git a/src/ui/editor.rs b/src/ui/editor.rs index 89057f5..f9a7bda 100644 --- a/src/ui/editor.rs +++ b/src/ui/editor.rs @@ -6,7 +6,7 @@ use email::{ sender::Sender, }; use log::debug; -use mml::MmlCompiler; +use mml::MmlCompilerBuilder; use process::Cmd; use std::{env, fs}; @@ -78,12 +78,16 @@ pub async fn edit_tpl_with_editor( match choice::post_edit() { Ok(PostEditChoice::Send) => { printer.print_log("Sending email…")?; - let email = MmlCompiler::new() - .with_pgp(config.pgp.clone()) - .compile(tpl) - .await? - .write_to_vec()?; + + let compiler = MmlCompilerBuilder::new(); + + #[cfg(feature = "pgp")] + let compiler = compiler.with_pgp(config.pgp.clone()); + + let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?; + sender.send(&email).await?; + if config.email_sending_save_copy { let sent_folder = config.sent_folder_alias()?; printer.print_log(format!("Adding email to the {} folder…", sent_folder))?; @@ -91,6 +95,7 @@ pub async fn edit_tpl_with_editor( .add_email(&sent_folder, &email, &Flags::from_iter([Flag::Seen])) .await?; } + remove_local_draft()?; printer.print("Done!")?; break; @@ -104,11 +109,13 @@ pub async fn edit_tpl_with_editor( break; } Ok(PostEditChoice::RemoteDraft) => { - let email = MmlCompiler::new() - .with_pgp(config.pgp.clone()) - .compile(tpl) - .await? - .write_to_vec()?; + let compiler = MmlCompilerBuilder::new(); + + #[cfg(feature = "pgp")] + let compiler = compiler.with_pgp(config.pgp.clone()); + + let email = compiler.build(tpl.as_str())?.compile().await?.into_vec()?; + backend .add_email( "drafts",