mirror of
https://github.com/soywod/himalaya.git
synced 2024-11-21 18:40:19 +00:00
update deps
This commit is contained in:
parent
d95f277bab
commit
58df66b5fa
11 changed files with 517 additions and 582 deletions
261
Cargo.lock
generated
261
Cargo.lock
generated
|
@ -186,22 +186,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
|
checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"concurrent-queue",
|
"concurrent-queue",
|
||||||
"event-listener 5.2.0",
|
"event-listener 5.3.0",
|
||||||
"event-listener-strategy 0.5.0",
|
"event-listener-strategy 0.5.1",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-executor"
|
name = "async-executor"
|
||||||
version = "1.8.0"
|
version = "1.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c"
|
checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-lock 3.3.0",
|
"async-lock 3.3.0",
|
||||||
"async-task",
|
"async-task",
|
||||||
"concurrent-queue",
|
"concurrent-queue",
|
||||||
"fastrand 2.0.1",
|
"fastrand 2.0.2",
|
||||||
"futures-lite 2.3.0",
|
"futures-lite 2.3.0",
|
||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
|
@ -250,7 +250,7 @@ dependencies = [
|
||||||
"futures-io",
|
"futures-io",
|
||||||
"futures-lite 2.3.0",
|
"futures-lite 2.3.0",
|
||||||
"parking",
|
"parking",
|
||||||
"polling 3.5.0",
|
"polling 3.6.0",
|
||||||
"rustix 0.38.32",
|
"rustix 0.38.32",
|
||||||
"slab",
|
"slab",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
@ -302,7 +302,7 @@ checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -331,13 +331,13 @@ checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-trait"
|
name = "async-trait"
|
||||||
version = "0.1.78"
|
version = "0.1.79"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85"
|
checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -359,9 +359,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.1.0"
|
version = "1.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "backtrace"
|
name = "backtrace"
|
||||||
|
@ -475,7 +475,7 @@ dependencies = [
|
||||||
"async-channel",
|
"async-channel",
|
||||||
"async-lock 3.3.0",
|
"async-lock 3.3.0",
|
||||||
"async-task",
|
"async-task",
|
||||||
"fastrand 2.0.1",
|
"fastrand 2.0.2",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
"futures-lite 2.3.0",
|
"futures-lite 2.3.0",
|
||||||
"piper",
|
"piper",
|
||||||
|
@ -619,9 +619,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chrono"
|
name = "chrono"
|
||||||
version = "0.4.35"
|
version = "0.4.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a"
|
checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android-tzdata",
|
"android-tzdata",
|
||||||
"iana-time-zone",
|
"iana-time-zone",
|
||||||
|
@ -634,8 +634,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chumsky"
|
name = "chumsky"
|
||||||
version = "1.0.0-alpha.6"
|
version = "1.0.0-alpha.7"
|
||||||
source = "git+https://github.com/zesterer/chumsky.git?rev=6837537#68375371a5fde6ee14f190c14e9a9cee0697f022"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c7b80276986f86789dc56ca6542d53bba9cda3c66091ebbe7bd96fc1bdf20f1f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hashbrown",
|
"hashbrown",
|
||||||
"regex-automata 0.3.9",
|
"regex-automata 0.3.9",
|
||||||
|
@ -665,9 +666,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "4.5.3"
|
version = "4.5.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813"
|
checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap_builder",
|
"clap_builder",
|
||||||
"clap_derive",
|
"clap_derive",
|
||||||
|
@ -682,7 +683,7 @@ dependencies = [
|
||||||
"anstream",
|
"anstream",
|
||||||
"anstyle",
|
"anstyle",
|
||||||
"clap_lex",
|
"clap_lex",
|
||||||
"strsim 0.11.0",
|
"strsim 0.11.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -696,14 +697,14 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "4.5.3"
|
version = "4.5.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f"
|
checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"heck 0.5.0",
|
"heck 0.5.0",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -908,7 +909,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -995,9 +996,9 @@ checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "der"
|
name = "der"
|
||||||
version = "0.7.8"
|
version = "0.7.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
|
checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const-oid",
|
"const-oid",
|
||||||
"pem-rfc7468",
|
"pem-rfc7468",
|
||||||
|
@ -1218,7 +1219,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "email-lib"
|
name = "email-lib"
|
||||||
version = "0.22.3"
|
version = "0.22.3"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"advisory-lock",
|
"advisory-lock",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
|
@ -1267,10 +1268,10 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "email-macros"
|
name = "email-macros"
|
||||||
version = "0.0.2"
|
version = "0.0.2"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1306,7 +1307,7 @@ dependencies = [
|
||||||
"heck 0.4.1",
|
"heck 0.4.1",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1327,7 +1328,7 @@ checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1398,9 +1399,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "event-listener"
|
name = "event-listener"
|
||||||
version = "5.2.0"
|
version = "5.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
|
checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"concurrent-queue",
|
"concurrent-queue",
|
||||||
"parking",
|
"parking",
|
||||||
|
@ -1419,11 +1420,11 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "event-listener-strategy"
|
name = "event-listener-strategy"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
|
checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"event-listener 5.2.0",
|
"event-listener 5.3.0",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -1438,9 +1439,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fastrand"
|
name = "fastrand"
|
||||||
version = "2.0.1"
|
version = "2.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
|
checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ff"
|
name = "ff"
|
||||||
|
@ -1601,7 +1602,7 @@ version = "2.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
|
checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastrand 2.0.1",
|
"fastrand 2.0.2",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
"parking",
|
"parking",
|
||||||
|
@ -1616,7 +1617,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1681,9 +1682,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.2.12"
|
version = "0.2.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
|
checksum = "a06fddc2749e0528d2813f95e050e87e52c8cbbae56223b9babf73b3e53b0cc6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
|
@ -1752,9 +1753,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.25"
|
version = "0.3.26"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb"
|
checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"fnv",
|
"fnv",
|
||||||
|
@ -2211,9 +2212,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.10"
|
version = "1.0.11"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
|
checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jobserver"
|
name = "jobserver"
|
||||||
|
@ -2255,8 +2256,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyring-lib"
|
name = "keyring-lib"
|
||||||
version = "0.4.0"
|
version = "0.4.1"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"keyring",
|
"keyring",
|
||||||
"log",
|
"log",
|
||||||
|
@ -2320,13 +2321,12 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libredox"
|
name = "libredox"
|
||||||
version = "0.0.1"
|
version = "0.1.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
|
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.5.0",
|
"bitflags 2.5.0",
|
||||||
"libc",
|
"libc",
|
||||||
"redox_syscall 0.4.1",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2397,9 +2397,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mail-auth"
|
name = "mail-auth"
|
||||||
version = "0.3.9"
|
version = "0.3.11"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "84725ed2de724f96bfe85cb4a0c06ac9a77fe612915675220525682ebdfdd7fa"
|
checksum = "4e9759ecef5c0d048464fee80947ca5ef25faff98add10ea8787a6e195b8dc5f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ahash",
|
"ahash",
|
||||||
"flate2",
|
"flate2",
|
||||||
|
@ -2410,7 +2410,7 @@ dependencies = [
|
||||||
"parking_lot 0.12.1",
|
"parking_lot 0.12.1",
|
||||||
"quick-xml 0.31.0",
|
"quick-xml 0.31.0",
|
||||||
"ring 0.17.8",
|
"ring 0.17.8",
|
||||||
"rustls-pemfile 2.1.1",
|
"rustls-pemfile 2.1.2",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"zip",
|
"zip",
|
||||||
|
@ -2427,9 +2427,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mail-parser"
|
name = "mail-parser"
|
||||||
version = "0.9.2"
|
version = "0.9.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7af1b812c3c16317ccadacb0db823f04c2872dfc5a1125f171f4a22d1705e9a7"
|
checksum = "ed5a1335c3a964788c90cb42ae04a34b5f2628e89566949ce3bd4ada695c0bcd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"encoding_rs",
|
"encoding_rs",
|
||||||
]
|
]
|
||||||
|
@ -2446,7 +2446,7 @@ dependencies = [
|
||||||
"mail-builder",
|
"mail-builder",
|
||||||
"md5",
|
"md5",
|
||||||
"rand",
|
"rand",
|
||||||
"rustls 0.22.2",
|
"rustls 0.22.3",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
"smtp-proto",
|
"smtp-proto",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
@ -2498,9 +2498,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.7.1"
|
version = "2.7.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
|
checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memoffset"
|
name = "memoffset"
|
||||||
|
@ -2513,9 +2513,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memoffset"
|
name = "memoffset"
|
||||||
version = "0.9.0"
|
version = "0.9.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg",
|
"autocfg",
|
||||||
]
|
]
|
||||||
|
@ -2555,8 +2555,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mml-lib"
|
name = "mml-lib"
|
||||||
version = "1.0.8"
|
version = "1.0.10"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-recursion",
|
"async-recursion",
|
||||||
"chumsky",
|
"chumsky",
|
||||||
|
@ -2708,7 +2708,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2771,8 +2771,8 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "oauth-lib"
|
name = "oauth-lib"
|
||||||
version = "0.1.0"
|
version = "0.1.1"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"oauth2",
|
"oauth2",
|
||||||
|
@ -2928,7 +2928,7 @@ dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"proc-macro2-diagnostics",
|
"proc-macro2-diagnostics",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3117,9 +3117,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pgp-lib"
|
name = "pgp-lib"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6d61233a437ba3de6396593cb27fda4e48ba7c7415756caffe9f9d5d0d07378c"
|
checksum = "c6802b1ef0dfc50217185a1eda6ddd546b65ffa8b80f942aa1feda6536adf165"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-recursion",
|
"async-recursion",
|
||||||
"futures",
|
"futures",
|
||||||
|
@ -3138,9 +3138,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-lite"
|
name = "pin-project-lite"
|
||||||
version = "0.2.13"
|
version = "0.2.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
|
checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-utils"
|
name = "pin-utils"
|
||||||
|
@ -3155,7 +3155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
|
checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"atomic-waker",
|
"atomic-waker",
|
||||||
"fastrand 2.0.1",
|
"fastrand 2.0.2",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -3188,9 +3188,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "platforms"
|
name = "platforms"
|
||||||
version = "3.3.0"
|
version = "3.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c"
|
checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "polling"
|
name = "polling"
|
||||||
|
@ -3210,12 +3210,13 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "polling"
|
name = "polling"
|
||||||
version = "3.5.0"
|
version = "3.6.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
|
checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"concurrent-queue",
|
"concurrent-queue",
|
||||||
|
"hermit-abi 0.3.9",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"rustix 0.38.32",
|
"rustix 0.38.32",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
@ -3300,15 +3301,15 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
"version_check",
|
"version_check",
|
||||||
"yansi 1.0.1",
|
"yansi 1.0.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "process-lib"
|
name = "process-lib"
|
||||||
version = "0.4.1"
|
version = "0.4.2"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -3390,9 +3391,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rayon"
|
name = "rayon"
|
||||||
version = "1.9.0"
|
version = "1.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd"
|
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"either",
|
"either",
|
||||||
"rayon-core",
|
"rayon-core",
|
||||||
|
@ -3428,9 +3429,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_users"
|
name = "redox_users"
|
||||||
version = "0.4.4"
|
version = "0.4.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
|
checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"libredox",
|
"libredox",
|
||||||
|
@ -3446,7 +3447,7 @@ dependencies = [
|
||||||
"aho-corasick",
|
"aho-corasick",
|
||||||
"memchr",
|
"memchr",
|
||||||
"regex-automata 0.4.6",
|
"regex-automata 0.4.6",
|
||||||
"regex-syntax 0.8.2",
|
"regex-syntax 0.8.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3468,7 +3469,7 @@ checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aho-corasick",
|
"aho-corasick",
|
||||||
"memchr",
|
"memchr",
|
||||||
"regex-syntax 0.8.2",
|
"regex-syntax 0.8.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -3479,9 +3480,9 @@ checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-syntax"
|
name = "regex-syntax"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest"
|
name = "reqwest"
|
||||||
|
@ -3665,9 +3666,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls"
|
name = "rustls"
|
||||||
version = "0.22.2"
|
version = "0.22.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e87c9956bd9807afa1f77e0f7594af32566e830e088a5576d27c5b6f30f49d41"
|
checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"ring 0.17.8",
|
"ring 0.17.8",
|
||||||
|
@ -3684,7 +3685,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b5bd40675c79c896f46d0031bf64c448b35e583dd2bc949751ddd800351e453a"
|
checksum = "b5bd40675c79c896f46d0031bf64c448b35e583dd2bc949751ddd800351e453a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"rustls 0.22.2",
|
"rustls 0.22.3",
|
||||||
"rustls-native-certs 0.7.0",
|
"rustls-native-certs 0.7.0",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
"rustls-webpki 0.102.2",
|
"rustls-webpki 0.102.2",
|
||||||
|
@ -3709,7 +3710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
|
checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"openssl-probe",
|
"openssl-probe",
|
||||||
"rustls-pemfile 2.1.1",
|
"rustls-pemfile 2.1.2",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
"schannel",
|
"schannel",
|
||||||
"security-framework",
|
"security-framework",
|
||||||
|
@ -3726,19 +3727,19 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls-pemfile"
|
name = "rustls-pemfile"
|
||||||
version = "2.1.1"
|
version = "2.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f48172685e6ff52a556baa527774f61fcaa884f59daf3375c62a3f1cd2549dab"
|
checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.7",
|
"base64 0.22.0",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls-pki-types"
|
name = "rustls-pki-types"
|
||||||
version = "1.4.0"
|
version = "1.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "868e20fada228fefaf6b652e00cc73623d54f8171e7352c18bb281571f2d92da"
|
checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustls-webpki"
|
name = "rustls-webpki"
|
||||||
|
@ -3817,8 +3818,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "secret-lib"
|
name = "secret-lib"
|
||||||
version = "0.4.1"
|
version = "0.4.3"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"keyring-lib",
|
"keyring-lib",
|
||||||
"log",
|
"log",
|
||||||
|
@ -3848,9 +3849,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "security-framework"
|
name = "security-framework"
|
||||||
version = "2.9.2"
|
version = "2.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
|
checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.3.2",
|
"bitflags 1.3.2",
|
||||||
"core-foundation",
|
"core-foundation",
|
||||||
|
@ -3861,9 +3862,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "security-framework-sys"
|
name = "security-framework-sys"
|
||||||
version = "2.9.1"
|
version = "2.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
|
checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"core-foundation-sys",
|
"core-foundation-sys",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -3913,14 +3914,14 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_json"
|
name = "serde_json"
|
||||||
version = "1.0.114"
|
version = "1.0.115"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
|
checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itoa",
|
"itoa",
|
||||||
"ryu",
|
"ryu",
|
||||||
|
@ -3945,7 +3946,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4020,8 +4021,8 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shellexpand-utils"
|
name = "shellexpand-utils"
|
||||||
version = "0.2.0"
|
version = "0.2.1"
|
||||||
source = "git+https://git.sr.ht/~soywod/pimalaya#dd8bada6ef4efb097490a7bfe1ca0499dac6dbf0"
|
source = "git+https://git.sr.ht/~soywod/pimalaya#ac7af0ccc2a42a64885654286048c74b9d9c800f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"shellexpand",
|
"shellexpand",
|
||||||
|
@ -4159,9 +4160,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.11.0"
|
version = "0.11.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "subtle"
|
name = "subtle"
|
||||||
|
@ -4182,9 +4183,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.53"
|
version = "2.0.58"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032"
|
checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -4254,7 +4255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
|
checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"fastrand 2.0.1",
|
"fastrand 2.0.2",
|
||||||
"rustix 0.38.32",
|
"rustix 0.38.32",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
@ -4295,7 +4296,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4334,9 +4335,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.36.0"
|
version = "1.37.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
|
checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"backtrace",
|
"backtrace",
|
||||||
"bytes",
|
"bytes",
|
||||||
|
@ -4359,7 +4360,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4378,7 +4379,7 @@ version = "0.25.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
|
checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustls 0.22.2",
|
"rustls 0.22.3",
|
||||||
"rustls-pki-types",
|
"rustls-pki-types",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
@ -4467,7 +4468,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -4520,7 +4521,7 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
|
checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memoffset 0.9.0",
|
"memoffset 0.9.1",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
@ -4672,7 +4673,7 @@ dependencies = [
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -4706,7 +4707,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
|
@ -4744,9 +4745,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "widestring"
|
name = "widestring"
|
||||||
version = "1.0.2"
|
version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
|
checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
|
@ -5000,9 +5001,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "xml-rs"
|
name = "xml-rs"
|
||||||
version = "0.8.19"
|
version = "0.8.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
|
checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "yansi"
|
name = "yansi"
|
||||||
|
@ -5106,7 +5107,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -5126,7 +5127,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.53",
|
"syn 2.0.58",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -5170,9 +5171,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zstd-sys"
|
name = "zstd-sys"
|
||||||
version = "2.0.9+zstd.1.5.5"
|
version = "2.0.10+zstd.1.5.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656"
|
checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"pkg-config",
|
"pkg-config",
|
||||||
|
|
27
Cargo.toml
27
Cargo.toml
|
@ -64,19 +64,19 @@ email_address = "0.2.4"
|
||||||
env_logger = "0.8"
|
env_logger = "0.8"
|
||||||
erased-serde = "0.3"
|
erased-serde = "0.3"
|
||||||
indicatif = "0.17"
|
indicatif = "0.17"
|
||||||
keyring-lib = { version = "=0.4.0", features = ["derive"] }
|
keyring-lib = { version = "=0.4.1", features = ["derive"] }
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
mail-builder = "0.3"
|
mail-builder = "0.3"
|
||||||
md5 = "0.7"
|
md5 = "0.7"
|
||||||
mml-lib = { version = "=1.0.8", default-features = false, features = ["derive"] }
|
mml-lib = { version = "=1.0.10", default-features = false, features = ["derive"] }
|
||||||
oauth-lib = "=0.1.0"
|
oauth-lib = "=0.1.1"
|
||||||
once_cell = "1.16"
|
once_cell = "1.16"
|
||||||
process-lib = { version = "=0.4.1", features = ["derive"] }
|
process-lib = { version = "=0.4.2", features = ["derive"] }
|
||||||
secret-lib = { version = "=0.4.1", features = ["derive"] }
|
secret-lib = { version = "=0.4.3", features = ["derive"] }
|
||||||
serde = { version = "1", features = ["derive"] }
|
serde = { version = "1", features = ["derive"] }
|
||||||
serde-toml-merge = "0.3"
|
serde-toml-merge = "0.3"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
shellexpand-utils = "=0.2.0"
|
shellexpand-utils = "=0.2.1"
|
||||||
sled = "=0.34.7"
|
sled = "=0.34.7"
|
||||||
termcolor = "1"
|
termcolor = "1"
|
||||||
terminal_size = "0.1"
|
terminal_size = "0.1"
|
||||||
|
@ -91,10 +91,8 @@ uuid = { version = "0.8", features = ["v4"] }
|
||||||
version = "0.1"
|
version = "0.1"
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
# waiting for alpha 7
|
email-lib = { path = "/home/soywod/sourcehut/pimalaya/email" }
|
||||||
chumsky = { git = "https://github.com/zesterer/chumsky.git", rev = "6837537" }
|
# email-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
|
|
||||||
email-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
|
||||||
email-macros = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
email-macros = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
keyring-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
keyring-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
mml-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
mml-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
|
@ -102,12 +100,3 @@ oauth-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
process-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
process-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
secret-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
secret-lib = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
shellexpand-utils = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
shellexpand-utils = { git = "https://git.sr.ht/~soywod/pimalaya" }
|
||||||
|
|
||||||
# email-lib = { path = "/home/soywod/sourcehut/pimalaya/email" }
|
|
||||||
# email-macros = { path = "/home/soywod/sourcehut/pimalaya/email-macros" }
|
|
||||||
# keyring-lib = { path = "/home/soywod/sourcehut/pimalaya/keyring" }
|
|
||||||
# mml-lib = { path = "/home/soywod/sourcehut/pimalaya/mml" }
|
|
||||||
# oauth-lib = { path = "/home/soywod/sourcehut/pimalaya/oauth" }
|
|
||||||
# process-lib = { path = "/home/soywod/sourcehut/pimalaya/process" }
|
|
||||||
# secret-lib = { path = "/home/soywod/sourcehut/pimalaya/secret" }
|
|
||||||
# shellexpand-utils = { path = "/home/soywod/sourcehut/pimalaya/shellexpand-utils" }
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use email::backend::context::BackendContextBuilder;
|
use email::backend::context::BackendContextBuilder;
|
||||||
use log::info;
|
use log::info;
|
||||||
|
@ -42,11 +42,7 @@ impl AccountCheckUpCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let ctx = ctx_builder
|
let ctx = ctx_builder.clone().build().await?;
|
||||||
.clone()
|
|
||||||
.build()
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
#[cfg(feature = "maildir")]
|
#[cfg(feature = "maildir")]
|
||||||
{
|
{
|
||||||
|
@ -59,7 +55,7 @@ impl AccountCheckUpCommand {
|
||||||
.and_then(|f| ctx.maildir.as_ref().and_then(|ctx| f(ctx)));
|
.and_then(|f| ctx.maildir.as_ref().and_then(|ctx| f(ctx)));
|
||||||
|
|
||||||
if let Some(maildir) = maildir.as_ref() {
|
if let Some(maildir) = maildir.as_ref() {
|
||||||
maildir.check_up().await.map_err(|err| anyhow!(err))?;
|
maildir.check_up().await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +70,7 @@ impl AccountCheckUpCommand {
|
||||||
.and_then(|f| ctx.imap.as_ref().and_then(|ctx| f(ctx)));
|
.and_then(|f| ctx.imap.as_ref().and_then(|ctx| f(ctx)));
|
||||||
|
|
||||||
if let Some(imap) = imap.as_ref() {
|
if let Some(imap) = imap.as_ref() {
|
||||||
imap.check_up().await.map_err(|err| anyhow!(err))?;
|
imap.check_up().await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +85,7 @@ impl AccountCheckUpCommand {
|
||||||
.and_then(|f| ctx.notmuch.as_ref().and_then(|ctx| f(ctx)));
|
.and_then(|f| ctx.notmuch.as_ref().and_then(|ctx| f(ctx)));
|
||||||
|
|
||||||
if let Some(notmuch) = notmuch.as_ref() {
|
if let Some(notmuch) = notmuch.as_ref() {
|
||||||
notmuch.check_up().await.map_err(|err| anyhow!(err))?;
|
notmuch.check_up().await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +100,7 @@ impl AccountCheckUpCommand {
|
||||||
.and_then(|f| ctx.smtp.as_ref().and_then(|ctx| f(ctx)));
|
.and_then(|f| ctx.smtp.as_ref().and_then(|ctx| f(ctx)));
|
||||||
|
|
||||||
if let Some(smtp) = smtp.as_ref() {
|
if let Some(smtp) = smtp.as_ref() {
|
||||||
smtp.check_up().await.map_err(|err| anyhow!(err))?;
|
smtp.check_up().await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +115,7 @@ impl AccountCheckUpCommand {
|
||||||
.and_then(|f| ctx.sendmail.as_ref().and_then(|ctx| f(ctx)));
|
.and_then(|f| ctx.sendmail.as_ref().and_then(|ctx| f(ctx)));
|
||||||
|
|
||||||
if let Some(sendmail) = sendmail.as_ref() {
|
if let Some(sendmail) = sendmail.as_ref() {
|
||||||
sendmail.check_up().await.map_err(|err| anyhow!(err))?;
|
sendmail.check_up().await?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,8 +102,7 @@ impl AccountSyncCommand {
|
||||||
.ok_or_else(|| anyhow!("imap config not found"))?;
|
.ok_or_else(|| anyhow!("imap config not found"))?;
|
||||||
let imap_ctx = ImapContextBuilder::new(account_config.clone(), imap_config)
|
let imap_ctx = ImapContextBuilder::new(account_config.clone(), imap_config)
|
||||||
.with_prebuilt_credentials()
|
.with_prebuilt_credentials()
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
let imap = BackendBuilder::new(account_config.clone(), imap_ctx);
|
let imap = BackendBuilder::new(account_config.clone(), imap_ctx);
|
||||||
self.sync(printer, account_name, imap).await
|
self.sync(printer, account_name, imap).await
|
||||||
}
|
}
|
||||||
|
@ -135,11 +134,7 @@ impl AccountSyncCommand {
|
||||||
AccountSyncBuilder::try_new(right)?.with_some_folders_filter(folders_filter);
|
AccountSyncBuilder::try_new(right)?.with_some_folders_filter(folders_filter);
|
||||||
|
|
||||||
if self.dry_run {
|
if self.dry_run {
|
||||||
let report = sync_builder
|
let report = sync_builder.with_dry_run(true).sync().await?;
|
||||||
.with_dry_run(true)
|
|
||||||
.sync()
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
let mut hunks_count = report.folder.patch.len();
|
let mut hunks_count = report.folder.patch.len();
|
||||||
|
|
||||||
if !report.folder.patch.is_empty() {
|
if !report.folder.patch.is_empty() {
|
||||||
|
@ -163,7 +158,7 @@ impl AccountSyncCommand {
|
||||||
"Estimated patch length for account {account_name} to be synchronized: {hunks_count}"
|
"Estimated patch length for account {account_name} to be synchronized: {hunks_count}"
|
||||||
))?;
|
))?;
|
||||||
} else if printer.is_json() {
|
} else if printer.is_json() {
|
||||||
sync_builder.sync().await.map_err(|err| anyhow!(err))?;
|
sync_builder.sync().await?;
|
||||||
printer.print(format!("Account {account_name} successfully synchronized!"))?;
|
printer.print(format!("Account {account_name} successfully synchronized!"))?;
|
||||||
} else {
|
} else {
|
||||||
let multi = MultiProgress::new();
|
let multi = MultiProgress::new();
|
||||||
|
@ -235,8 +230,7 @@ impl AccountSyncCommand {
|
||||||
async { Ok(()) }
|
async { Ok(()) }
|
||||||
})
|
})
|
||||||
.sync()
|
.sync()
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
let folders_patch_err = report
|
let folders_patch_err = report
|
||||||
.folder
|
.folder
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
pub mod config;
|
pub mod config;
|
||||||
pub(crate) mod wizard;
|
pub(crate) mod wizard;
|
||||||
|
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use std::{ops::Deref, sync::Arc};
|
use std::{ops::Deref, sync::Arc};
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ use email::{
|
||||||
send::{SendMessage, SendMessageThenSaveCopy},
|
send::{SendMessage, SendMessageThenSaveCopy},
|
||||||
Messages,
|
Messages,
|
||||||
},
|
},
|
||||||
|
AnyResult,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
@ -143,7 +144,7 @@ impl BackendContextBuilder {
|
||||||
.with_prebuilt_credentials()
|
.with_prebuilt_credentials()
|
||||||
});
|
});
|
||||||
match builder {
|
match builder {
|
||||||
Some(builder) => Some(builder.await.map_err(|err| anyhow!(err))?),
|
Some(builder) => Some(builder.await?),
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -514,7 +515,7 @@ impl email::backend::context::BackendContextBuilder for BackendContextBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn build(self) -> email::Result<Self::Context> {
|
async fn build(self) -> AnyResult<Self::Context> {
|
||||||
let mut ctx = BackendContext::default();
|
let mut ctx = BackendContext::default();
|
||||||
|
|
||||||
#[cfg(feature = "imap")]
|
#[cfg(feature = "imap")]
|
||||||
|
@ -634,7 +635,7 @@ impl Backend {
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
toml_account_config: toml_account_config.clone(),
|
toml_account_config: toml_account_config.clone(),
|
||||||
backend: backend_builder.build().await.map_err(|err| anyhow!(err))?,
|
backend: backend_builder.build().await?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,12 +679,9 @@ impl Backend {
|
||||||
) -> Result<Envelopes> {
|
) -> Result<Envelopes> {
|
||||||
let backend_kind = self.toml_account_config.list_envelopes_kind();
|
let backend_kind = self.toml_account_config.list_envelopes_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let envelopes = self
|
let envelopes = self.backend.list_envelopes(folder, opts).await?;
|
||||||
.backend
|
let envelopes =
|
||||||
.list_envelopes(folder, opts)
|
Envelopes::from_backend(&self.backend.account_config, &id_mapper, envelopes)?;
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
let envelopes = Envelopes::from_backend(&self.account_config, &id_mapper, envelopes)?;
|
|
||||||
Ok(envelopes)
|
Ok(envelopes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -691,70 +689,54 @@ impl Backend {
|
||||||
let backend_kind = self.toml_account_config.add_flags_kind();
|
let backend_kind = self.toml_account_config.add_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.add_flags(folder, &ids, flags).await?;
|
||||||
.add_flags(folder, &ids, flags)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
pub async fn add_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.add_flags_kind();
|
let backend_kind = self.toml_account_config.add_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.add_flag(folder, &ids, flag).await?;
|
||||||
.add_flag(folder, &ids, flag)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn set_flags(&self, folder: &str, ids: &[usize], flags: &Flags) -> Result<()> {
|
pub async fn set_flags(&self, folder: &str, ids: &[usize], flags: &Flags) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.set_flags_kind();
|
let backend_kind = self.toml_account_config.set_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.set_flags(folder, &ids, flags).await?;
|
||||||
.set_flags(folder, &ids, flags)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn set_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
pub async fn set_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.set_flags_kind();
|
let backend_kind = self.toml_account_config.set_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.set_flag(folder, &ids, flag).await?;
|
||||||
.set_flag(folder, &ids, flag)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn remove_flags(&self, folder: &str, ids: &[usize], flags: &Flags) -> Result<()> {
|
pub async fn remove_flags(&self, folder: &str, ids: &[usize], flags: &Flags) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.remove_flags_kind();
|
let backend_kind = self.toml_account_config.remove_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.remove_flags(folder, &ids, flags).await?;
|
||||||
.remove_flags(folder, &ids, flags)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn remove_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
pub async fn remove_flag(&self, folder: &str, ids: &[usize], flag: Flag) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.remove_flags_kind();
|
let backend_kind = self.toml_account_config.remove_flags_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.remove_flag(folder, &ids, flag).await?;
|
||||||
.remove_flag(folder, &ids, flag)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_message(&self, folder: &str, email: &[u8]) -> Result<SingleId> {
|
pub async fn add_message(&self, folder: &str, email: &[u8]) -> Result<SingleId> {
|
||||||
let backend_kind = self.toml_account_config.add_message_kind();
|
let backend_kind = self.toml_account_config.add_message_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let id = self
|
let id = self.backend.add_message(folder, email).await?;
|
||||||
.backend
|
|
||||||
.add_message(folder, email)
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
id_mapper.create_alias(&*id)?;
|
id_mapper.create_alias(&*id)?;
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
|
@ -770,8 +752,7 @@ impl Backend {
|
||||||
let id = self
|
let id = self
|
||||||
.backend
|
.backend
|
||||||
.add_message_with_flags(folder, email, flags)
|
.add_message_with_flags(folder, email, flags)
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
id_mapper.create_alias(&*id)?;
|
id_mapper.create_alias(&*id)?;
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
|
@ -780,20 +761,16 @@ impl Backend {
|
||||||
let backend_kind = self.toml_account_config.get_messages_kind();
|
let backend_kind = self.toml_account_config.get_messages_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
let msgs = self.backend.peek_messages(folder, &ids).await?;
|
||||||
.peek_messages(folder, &ids)
|
Ok(msgs)
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_messages(&self, folder: &str, ids: &[usize]) -> Result<Messages> {
|
pub async fn get_messages(&self, folder: &str, ids: &[usize]) -> Result<Messages> {
|
||||||
let backend_kind = self.toml_account_config.get_messages_kind();
|
let backend_kind = self.toml_account_config.get_messages_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
let msgs = self.backend.get_messages(folder, &ids).await?;
|
||||||
.get_messages(folder, &ids)
|
Ok(msgs)
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn copy_messages(
|
pub async fn copy_messages(
|
||||||
|
@ -807,8 +784,8 @@ impl Backend {
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend
|
||||||
.copy_messages(from_folder, to_folder, &ids)
|
.copy_messages(from_folder, to_folder, &ids)
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| anyhow!(err))
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn move_messages(
|
pub async fn move_messages(
|
||||||
|
@ -822,32 +799,26 @@ impl Backend {
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend
|
||||||
.move_messages(from_folder, to_folder, &ids)
|
.move_messages(from_folder, to_folder, &ids)
|
||||||
.await
|
.await?;
|
||||||
.map_err(|err| anyhow!(err))
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn delete_messages(&self, folder: &str, ids: &[usize]) -> Result<()> {
|
pub async fn delete_messages(&self, folder: &str, ids: &[usize]) -> Result<()> {
|
||||||
let backend_kind = self.toml_account_config.delete_messages_kind();
|
let backend_kind = self.toml_account_config.delete_messages_kind();
|
||||||
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
let id_mapper = self.build_id_mapper(folder, backend_kind)?;
|
||||||
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
let ids = Id::multiple(id_mapper.get_ids(ids)?);
|
||||||
self.backend
|
self.backend.delete_messages(folder, &ids).await?;
|
||||||
.delete_messages(folder, &ids)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn send_message_then_save_copy(&self, msg: &[u8]) -> Result<()> {
|
pub async fn send_message_then_save_copy(&self, msg: &[u8]) -> Result<()> {
|
||||||
self.backend
|
self.backend.send_message_then_save_copy(msg).await?;
|
||||||
.send_message_then_save_copy(msg)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn watch_envelopes(&self, folder: &str) -> Result<()> {
|
pub async fn watch_envelopes(&self, folder: &str) -> Result<()> {
|
||||||
self.backend
|
self.backend.watch_envelopes(folder).await?;
|
||||||
.watch_envelopes(folder)
|
Ok(())
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,351 +187,351 @@ fn set_tables_dotted<'a>(item: &'a mut Item, keys: impl IntoIterator<Item = &'a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
// #[cfg(test)]
|
||||||
mod test {
|
// mod test {
|
||||||
use std::collections::HashMap;
|
// use std::collections::HashMap;
|
||||||
|
|
||||||
use crate::{account::config::TomlAccountConfig, config::TomlConfig};
|
// use crate::{account::config::TomlAccountConfig, config::TomlConfig};
|
||||||
|
|
||||||
use super::pretty_serialize;
|
// use super::pretty_serialize;
|
||||||
|
|
||||||
fn assert_eq(config: TomlAccountConfig, expected_toml: &str) {
|
// fn assert_eq(config: TomlAccountConfig, expected_toml: &str) {
|
||||||
let config = TomlConfig {
|
// let config = TomlConfig {
|
||||||
accounts: HashMap::from_iter([("test".into(), config)]),
|
// accounts: HashMap::from_iter([("test".into(), config)]),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
};
|
// };
|
||||||
|
|
||||||
let toml = pretty_serialize(&config).expect("serialize error");
|
// let toml = pretty_serialize(&config).expect("serialize error");
|
||||||
assert_eq!(toml, expected_toml);
|
// assert_eq!(toml, expected_toml);
|
||||||
|
|
||||||
let expected_config = toml::from_str(&toml).expect("deserialize error");
|
// let expected_config = toml::from_str(&toml).expect("deserialize error");
|
||||||
assert_eq!(config, expected_config);
|
// assert_eq!(config, expected_config);
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_default() {
|
// fn pretty_serialize_default() {
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
"#,
|
// "#,
|
||||||
)
|
// )
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "account-sync")]
|
// #[cfg(feature = "account-sync")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_sync_all() {
|
// fn pretty_serialize_sync_all() {
|
||||||
use email::account::sync::config::SyncConfig;
|
// use email::account::sync::config::SyncConfig;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
sync: Some(SyncConfig {
|
// sync: Some(SyncConfig {
|
||||||
enable: Some(false),
|
// enable: Some(false),
|
||||||
dir: Some("/tmp/test".into()),
|
// dir: Some("/tmp/test".into()),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
sync.enable = false
|
// sync.enable = false
|
||||||
sync.dir = "/tmp/test"
|
// sync.dir = "/tmp/test"
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "account-sync")]
|
// #[cfg(feature = "account-sync")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_sync_include() {
|
// fn pretty_serialize_sync_include() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::sync::config::SyncConfig,
|
// account::sync::config::SyncConfig,
|
||||||
folder::sync::config::{FolderSyncConfig, FolderSyncStrategy},
|
// folder::sync::config::{FolderSyncConfig, FolderSyncStrategy},
|
||||||
};
|
// };
|
||||||
use std::collections::BTreeSet;
|
// use std::collections::BTreeSet;
|
||||||
|
|
||||||
use crate::folder::config::FolderConfig;
|
// use crate::folder::config::FolderConfig;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
sync: Some(SyncConfig {
|
// sync: Some(SyncConfig {
|
||||||
enable: Some(true),
|
// enable: Some(true),
|
||||||
dir: Some("/tmp/test".into()),
|
// dir: Some("/tmp/test".into()),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
folder: Some(FolderConfig {
|
// folder: Some(FolderConfig {
|
||||||
sync: Some(FolderSyncConfig {
|
// sync: Some(FolderSyncConfig {
|
||||||
filter: FolderSyncStrategy::Include(BTreeSet::from_iter(["test".into()])),
|
// filter: FolderSyncStrategy::Include(BTreeSet::from_iter(["test".into()])),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
sync.enable = true
|
// sync.enable = true
|
||||||
sync.dir = "/tmp/test"
|
// sync.dir = "/tmp/test"
|
||||||
folder.sync.filter.include = ["test"]
|
// folder.sync.filter.include = ["test"]
|
||||||
folder.sync.permissions.create = true
|
// folder.sync.permissions.create = true
|
||||||
folder.sync.permissions.delete = true
|
// folder.sync.permissions.delete = true
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "imap")]
|
// #[cfg(feature = "imap")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_imap_passwd_cmd() {
|
// fn pretty_serialize_imap_passwd_cmd() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::passwd::PasswdConfig,
|
// account::config::passwd::PasswdConfig,
|
||||||
imap::config::{ImapAuthConfig, ImapConfig},
|
// imap::config::{ImapAuthConfig, ImapConfig},
|
||||||
};
|
// };
|
||||||
use secret::Secret;
|
// use secret::Secret;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
imap: Some(ImapConfig {
|
// imap: Some(ImapConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command(
|
// auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command(
|
||||||
"pass show test",
|
// "pass show test",
|
||||||
))),
|
// ))),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
imap.host = "localhost"
|
// imap.host = "localhost"
|
||||||
imap.port = 143
|
// imap.port = 143
|
||||||
imap.login = "test@localhost"
|
// imap.login = "test@localhost"
|
||||||
imap.passwd.command = "pass show test"
|
// imap.passwd.command = "pass show test"
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "imap")]
|
// #[cfg(feature = "imap")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_imap_passwd_cmds() {
|
// fn pretty_serialize_imap_passwd_cmds() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::passwd::PasswdConfig,
|
// account::config::passwd::PasswdConfig,
|
||||||
imap::config::{ImapAuthConfig, ImapConfig},
|
// imap::config::{ImapAuthConfig, ImapConfig},
|
||||||
};
|
// };
|
||||||
use secret::Secret;
|
// use secret::Secret;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
imap: Some(ImapConfig {
|
// imap: Some(ImapConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![
|
// auth: ImapAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![
|
||||||
"pass show test",
|
// "pass show test",
|
||||||
"tr -d '[:blank:]'",
|
// "tr -d '[:blank:]'",
|
||||||
]))),
|
// ]))),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
imap.host = "localhost"
|
// imap.host = "localhost"
|
||||||
imap.port = 143
|
// imap.port = 143
|
||||||
imap.login = "test@localhost"
|
// imap.login = "test@localhost"
|
||||||
imap.passwd.command = ["pass show test", "tr -d '[:blank:]'"]
|
// imap.passwd.command = ["pass show test", "tr -d '[:blank:]'"]
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "imap")]
|
// #[cfg(feature = "imap")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_imap_oauth2() {
|
// fn pretty_serialize_imap_oauth2() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::oauth2::OAuth2Config,
|
// account::config::oauth2::OAuth2Config,
|
||||||
imap::config::{ImapAuthConfig, ImapConfig},
|
// imap::config::{ImapAuthConfig, ImapConfig},
|
||||||
};
|
// };
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
imap: Some(ImapConfig {
|
// imap: Some(ImapConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: ImapAuthConfig::OAuth2(OAuth2Config {
|
// auth: ImapAuthConfig::OAuth2(OAuth2Config {
|
||||||
client_id: "client-id".into(),
|
// client_id: "client-id".into(),
|
||||||
auth_url: "auth-url".into(),
|
// auth_url: "auth-url".into(),
|
||||||
token_url: "token-url".into(),
|
// token_url: "token-url".into(),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
imap.host = "localhost"
|
// imap.host = "localhost"
|
||||||
imap.port = 143
|
// imap.port = 143
|
||||||
imap.login = "test@localhost"
|
// imap.login = "test@localhost"
|
||||||
imap.oauth2.method = "xoauth2"
|
// imap.oauth2.method = "xoauth2"
|
||||||
imap.oauth2.client-id = "client-id"
|
// imap.oauth2.client-id = "client-id"
|
||||||
imap.oauth2.auth-url = "auth-url"
|
// imap.oauth2.auth-url = "auth-url"
|
||||||
imap.oauth2.token-url = "token-url"
|
// imap.oauth2.token-url = "token-url"
|
||||||
imap.oauth2.pkce = false
|
// imap.oauth2.pkce = false
|
||||||
imap.oauth2.scopes = []
|
// imap.oauth2.scopes = []
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "maildir")]
|
// #[cfg(feature = "maildir")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_maildir() {
|
// fn pretty_serialize_maildir() {
|
||||||
use email::maildir::config::MaildirConfig;
|
// use email::maildir::config::MaildirConfig;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
maildir: Some(MaildirConfig {
|
// maildir: Some(MaildirConfig {
|
||||||
root_dir: "/tmp/test".into(),
|
// root_dir: "/tmp/test".into(),
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
maildir.root-dir = "/tmp/test"
|
// maildir.root-dir = "/tmp/test"
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "smtp")]
|
// #[cfg(feature = "smtp")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_smtp_passwd_cmd() {
|
// fn pretty_serialize_smtp_passwd_cmd() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::passwd::PasswdConfig,
|
// account::config::passwd::PasswdConfig,
|
||||||
smtp::config::{SmtpAuthConfig, SmtpConfig},
|
// smtp::config::{SmtpAuthConfig, SmtpConfig},
|
||||||
};
|
// };
|
||||||
use secret::Secret;
|
// use secret::Secret;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
smtp: Some(SmtpConfig {
|
// smtp: Some(SmtpConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command(
|
// auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command(
|
||||||
"pass show test",
|
// "pass show test",
|
||||||
))),
|
// ))),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
smtp.host = "localhost"
|
// smtp.host = "localhost"
|
||||||
smtp.port = 143
|
// smtp.port = 143
|
||||||
smtp.login = "test@localhost"
|
// smtp.login = "test@localhost"
|
||||||
smtp.passwd.command = "pass show test"
|
// smtp.passwd.command = "pass show test"
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "smtp")]
|
// #[cfg(feature = "smtp")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_smtp_passwd_cmds() {
|
// fn pretty_serialize_smtp_passwd_cmds() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::passwd::PasswdConfig,
|
// account::config::passwd::PasswdConfig,
|
||||||
smtp::config::{SmtpAuthConfig, SmtpConfig},
|
// smtp::config::{SmtpAuthConfig, SmtpConfig},
|
||||||
};
|
// };
|
||||||
use secret::Secret;
|
// use secret::Secret;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
smtp: Some(SmtpConfig {
|
// smtp: Some(SmtpConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![
|
// auth: SmtpAuthConfig::Passwd(PasswdConfig(Secret::new_command(vec![
|
||||||
"pass show test",
|
// "pass show test",
|
||||||
"tr -d '[:blank:]'",
|
// "tr -d '[:blank:]'",
|
||||||
]))),
|
// ]))),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
smtp.host = "localhost"
|
// smtp.host = "localhost"
|
||||||
smtp.port = 143
|
// smtp.port = 143
|
||||||
smtp.login = "test@localhost"
|
// smtp.login = "test@localhost"
|
||||||
smtp.passwd.command = ["pass show test", "tr -d '[:blank:]'"]
|
// smtp.passwd.command = ["pass show test", "tr -d '[:blank:]'"]
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "smtp")]
|
// #[cfg(feature = "smtp")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_smtp_oauth2() {
|
// fn pretty_serialize_smtp_oauth2() {
|
||||||
use email::{
|
// use email::{
|
||||||
account::config::oauth2::OAuth2Config,
|
// account::config::oauth2::OAuth2Config,
|
||||||
smtp::config::{SmtpAuthConfig, SmtpConfig},
|
// smtp::config::{SmtpAuthConfig, SmtpConfig},
|
||||||
};
|
// };
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
smtp: Some(SmtpConfig {
|
// smtp: Some(SmtpConfig {
|
||||||
host: "localhost".into(),
|
// host: "localhost".into(),
|
||||||
port: 143,
|
// port: 143,
|
||||||
login: "test@localhost".into(),
|
// login: "test@localhost".into(),
|
||||||
auth: SmtpAuthConfig::OAuth2(OAuth2Config {
|
// auth: SmtpAuthConfig::OAuth2(OAuth2Config {
|
||||||
client_id: "client-id".into(),
|
// client_id: "client-id".into(),
|
||||||
auth_url: "auth-url".into(),
|
// auth_url: "auth-url".into(),
|
||||||
token_url: "token-url".into(),
|
// token_url: "token-url".into(),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
}),
|
// }),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
smtp.host = "localhost"
|
// smtp.host = "localhost"
|
||||||
smtp.port = 143
|
// smtp.port = 143
|
||||||
smtp.login = "test@localhost"
|
// smtp.login = "test@localhost"
|
||||||
smtp.oauth2.method = "xoauth2"
|
// smtp.oauth2.method = "xoauth2"
|
||||||
smtp.oauth2.client-id = "client-id"
|
// smtp.oauth2.client-id = "client-id"
|
||||||
smtp.oauth2.auth-url = "auth-url"
|
// smtp.oauth2.auth-url = "auth-url"
|
||||||
smtp.oauth2.token-url = "token-url"
|
// smtp.oauth2.token-url = "token-url"
|
||||||
smtp.oauth2.pkce = false
|
// smtp.oauth2.pkce = false
|
||||||
smtp.oauth2.scopes = []
|
// smtp.oauth2.scopes = []
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
#[cfg(feature = "pgp-cmds")]
|
// #[cfg(feature = "pgp-cmds")]
|
||||||
#[test]
|
// #[test]
|
||||||
fn pretty_serialize_pgp_cmds() {
|
// fn pretty_serialize_pgp_cmds() {
|
||||||
use email::account::config::pgp::PgpConfig;
|
// use email::account::config::pgp::PgpConfig;
|
||||||
|
|
||||||
assert_eq(
|
// assert_eq(
|
||||||
TomlAccountConfig {
|
// TomlAccountConfig {
|
||||||
email: "test@localhost".into(),
|
// email: "test@localhost".into(),
|
||||||
pgp: Some(PgpConfig::Cmds(Default::default())),
|
// pgp: Some(PgpConfig::Cmds(Default::default())),
|
||||||
..Default::default()
|
// ..Default::default()
|
||||||
},
|
// },
|
||||||
r#"[accounts.test]
|
// r#"[accounts.test]
|
||||||
email = "test@localhost"
|
// email = "test@localhost"
|
||||||
pgp.backend = "cmds"
|
// pgp.backend = "cmds"
|
||||||
"#,
|
// "#,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use email::{backend::feature::BackendFeatureSource, folder::add::AddFolder};
|
use email::{backend::feature::BackendFeatureSource, folder::add::AddFolder};
|
||||||
use log::info;
|
use log::info;
|
||||||
|
@ -48,10 +48,7 @@ impl AddFolderCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
backend
|
backend.add_folder(folder).await?;
|
||||||
.add_folder(folder)
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
printer.print(format!("Folder {folder} successfully created!"))
|
printer.print(format!("Folder {folder} successfully created!"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use dialoguer::Confirm;
|
use dialoguer::Confirm;
|
||||||
use email::{backend::feature::BackendFeatureSource, folder::delete::DeleteFolder};
|
use email::{backend::feature::BackendFeatureSource, folder::delete::DeleteFolder};
|
||||||
|
@ -61,10 +61,7 @@ impl FolderDeleteCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
backend
|
backend.delete_folder(folder).await?;
|
||||||
.delete_folder(folder)
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
printer.print(format!("Folder {folder} successfully deleted!"))
|
printer.print(format!("Folder {folder} successfully deleted!"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use email::{backend::feature::BackendFeatureSource, folder::expunge::ExpungeFolder};
|
use email::{backend::feature::BackendFeatureSource, folder::expunge::ExpungeFolder};
|
||||||
use log::info;
|
use log::info;
|
||||||
|
@ -49,10 +49,7 @@ impl FolderExpungeCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
backend
|
backend.expunge_folder(folder).await?;
|
||||||
.expunge_folder(folder)
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
printer.print(format!("Folder {folder} successfully expunged!"))
|
printer.print(format!("Folder {folder} successfully expunged!"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use email::{backend::feature::BackendFeatureSource, folder::list::ListFolders};
|
use email::{backend::feature::BackendFeatureSource, folder::list::ListFolders};
|
||||||
use log::info;
|
use log::info;
|
||||||
|
@ -50,11 +50,7 @@ impl FolderListCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let folders: Folders = backend
|
let folders: Folders = backend.list_folders().await?.into();
|
||||||
.list_folders()
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?
|
|
||||||
.into();
|
|
||||||
|
|
||||||
printer.print_table(
|
printer.print_table(
|
||||||
Box::new(folders),
|
Box::new(folders),
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use anyhow::{anyhow, Result};
|
use anyhow::Result;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use dialoguer::Confirm;
|
use dialoguer::Confirm;
|
||||||
use email::{backend::feature::BackendFeatureSource, folder::purge::PurgeFolder};
|
use email::{backend::feature::BackendFeatureSource, folder::purge::PurgeFolder};
|
||||||
|
@ -61,10 +61,7 @@ impl FolderPurgeCommand {
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
backend
|
backend.purge_folder(folder).await?;
|
||||||
.purge_folder(folder)
|
|
||||||
.await
|
|
||||||
.map_err(|err| anyhow!(err))?;
|
|
||||||
|
|
||||||
printer.print(format!("Folder {folder} successfully purged!"))
|
printer.print(format!("Folder {folder} successfully purged!"))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue