Disable the man subcommand, we package man pages anyway Also disable DBUS notifications support, for now... --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -61,9 +61,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "assert_cmd" @@ -105,14 +105,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.1", - "futures-lite 2.3.0", + "fastrand 2.3.0", + "futures-lite 2.5.0", "slab", ] @@ -134,22 +134,22 @@ checksum = "ebcd09b382f40fcd159c2d695175 dependencies = [ "async-lock", "blocking", - "futures-lite 2.3.0", + "futures-lite 2.5.0", ] [[package]] name = "async-io" -version = "2.3.4" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "parking", - "polling 3.7.3", + "polling 3.7.4", "rustix", "slab", "tracing", @@ -175,14 +175,14 @@ checksum = "b948000fad4873c1c9339d60f262 dependencies = [ "async-io", "blocking", - "futures-lite 2.3.0", + "futures-lite 2.5.0", ] [[package]] name = "async-process" -version = "2.2.4" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" dependencies = [ "async-channel 2.3.1", "async-io", @@ -192,10 +192,9 @@ dependencies = [ "blocking", "cfg-if", "event-listener 5.3.1", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "rustix", "tracing", - "windows-sys 0.59.0", ] [[package]] @@ -230,9 +229,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16 [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" @@ -256,12 +255,6 @@ dependencies = [ ] [[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] name = "blocking" version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -270,7 +263,7 @@ dependencies = [ "async-channel 2.3.1", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite 2.5.0", "piper", ] @@ -288,14 +281,14 @@ checksum = "e0af050e27e5d57aa14975f97fe4 dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "regex-automata", @@ -310,9 +303,9 @@ checksum = "79296716171880943b8470b5f8d0 [[package]] name = "bytes" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "castaway" @@ -322,9 +315,9 @@ checksum = "a2698f953def977c68f935bb0dfa [[package]] name = "cc" -version = "1.1.15" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" dependencies = [ "shlex", ] @@ -343,9 +336,9 @@ checksum = "613afe47fcd5fac7ccf1db93babc [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -413,18 +406,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -441,24 +434,24 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "csv" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", @@ -477,9 +470,9 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.46" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6" +checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" dependencies = [ "curl-sys", "libc", @@ -492,9 +485,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.74+curl-8.9.0" +version = "0.4.78+curl-8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af10b986114528fcdc4b63b6f5f021b7057618411046a4de2ba0f0149a097bf" +checksum = "8eec768341c5c7789611ae51cf6c459099f22e64a5d5d0ce4892434e33821eaf" dependencies = [ "cc", "libc", @@ -513,17 +506,6 @@ source = "registry+https://github.com/ru checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] -name = "dbus" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" -dependencies = [ - "libc", - "libdbus-sys", - "winapi", -] - -[[package]] name = "deranged" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -539,24 +521,14 @@ source = "registry+https://github.com/ru checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "libc", - "redox_users", - "winapi", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -567,9 +539,9 @@ checksum = "fea41bba32d969b5139977527356 [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -582,12 +554,12 @@ checksum = "5443807d6dff69373d433ab9ef53 [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -609,9 +581,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener 5.3.1", "pin-project-lite", @@ -640,9 +612,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" @@ -658,9 +630,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -716,9 +688,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -747,9 +719,9 @@ checksum = "05f29059c0c2090612e8d742178b [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -779,11 +751,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ - "fastrand 2.1.1", + "fastrand 2.3.0", "futures-core", "futures-io", "parking", @@ -798,7 +770,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0 dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] @@ -853,12 +825,18 @@ dependencies = [ ] [[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] name = "hashlink" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -889,16 +867,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core", ] [[package]] @@ -911,13 +889,142 @@ dependencies = [ ] [[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -949,12 +1056,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", "serde", ] @@ -1018,16 +1125,17 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1059,25 +1167,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9 [[package]] name = "libc" -version = "0.2.158" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" - -[[package]] -name = "libdbus-sys" -version = "0.2.5" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" -dependencies = [ - "cc", - "pkg-config", -] +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -1101,7 +1199,7 @@ checksum = "c0ff37bd590ca25063e35af745c3 dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.3", + "redox_syscall 0.5.8", ] [[package]] @@ -1143,32 +1241,16 @@ source = "registry+https://github.com/ru checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] -name = "log" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" - -[[package]] -name = "mac-notification-sys" -version = "0.6.1" +name = "litemap" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fca4d74ff9dbaac16a01b924bc3693fa2bba0862c2c633abc73f9a8ea21f64" -dependencies = [ - "cc", - "dirs-next", - "objc-foundation", - "objc_id", - "time", -] +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] -name = "malloc_buf" -version = "0.0.6" +name = "log" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "meli" @@ -1188,7 +1270,6 @@ dependencies = [ "linkify", "melib", "nix", - "notify-rust", "predicates", "proc-macro2", "quote", @@ -1232,7 +1313,7 @@ dependencies = [ "nix", "nom", "notify", - "polling 3.7.3", + "polling 3.7.4", "regex", "rusqlite", "rusty-fork", @@ -1365,18 +1446,6 @@ dependencies = [ ] [[package]] -name = "notify-rust" -version = "4.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a1d03b6305ecefdd9c6c60150179bb8d9f0cd4e64bbcad1e41419e7bf5e414" -dependencies = [ - "dbus", - "log", - "mac-notification-sys", - "tauri-winrt-notification", -] - -[[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1398,45 +1467,16 @@ source = "registry+https://github.com/ru checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - -[[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -1455,7 +1495,7 @@ checksum = "a948666b637a0f465e8564c73e89 dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] @@ -1466,18 +1506,18 @@ checksum = "ff011a302c396a5197692431fc19 [[package]] name = "openssl-src" -version = "300.3.1+3.3.1" +version = "300.4.1+3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7259953d42a81bf137fbbd73bd30a8e1914d6dce43c2b90ed575783a22608b91" +checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -1488,9 +1528,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "percent-encoding" @@ -1500,29 +1540,29 @@ checksum = "e3148f5046208a5d56bcfc03053e [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -1537,15 +1577,15 @@ source = "registry+https://github.com/ru checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.1", + "fastrand 2.3.0", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" @@ -1565,9 +1605,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.3" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", @@ -1586,9 +1626,9 @@ checksum = "439ee305def115ba05938db6eb16 [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -1600,15 +1640,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -1640,9 +1680,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -1654,15 +1694,6 @@ source = "registry+https://github.com/ru checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] -name = "quick-xml" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" -dependencies = [ - "memchr", -] - -[[package]] name = "quote" version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1682,9 +1713,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -1696,21 +1727,10 @@ source = "registry+https://github.com/ru checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" [[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom", - "libredox", - "thiserror", -] - -[[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1720,9 +1740,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1731,9 +1751,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rusqlite" @@ -1757,15 +1777,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.35" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1797,11 +1817,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1819,9 +1839,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -1829,29 +1849,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.209" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.209" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] name = "serde_json" -version = "1.0.127" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -1871,9 +1891,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -1940,9 +1960,9 @@ dependencies = [ [[package]] name = "smol" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aad24f41392790e6ac67f4f4cd871da61f7d758e07b5622431e491e897d9c8a7" +checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f" dependencies = [ "async-channel 2.3.1", "async-executor", @@ -1952,20 +1972,26 @@ dependencies = [ "async-net", "async-process", "blocking", - "futures-lite 2.3.0", + "futures-lite 2.5.0", ] [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] name = "structopt" version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2002,9 +2028,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.76" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -2012,24 +2038,24 @@ dependencies = [ ] [[package]] -name = "tauri-winrt-notification" -version = "0.2.1" +name = "synstructure" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89f5fb70d6f62381f5d9b2ba9008196150b40b75f3068eb24faeddf1c686871" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "quick-xml", - "windows", - "windows-version", + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] name = "tempfile" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", - "fastrand 2.1.1", + "fastrand 2.3.0", "once_cell", "rustix", "windows-sys 0.59.0", @@ -2064,29 +2090,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -2105,30 +2131,25 @@ checksum = "ef927ca75afb808a4d64dd374f00 [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] name = "toml" version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2152,9 +2173,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", @@ -2165,9 +2186,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -2177,20 +2198,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", ] @@ -2206,43 +2227,28 @@ dependencies = [ ] [[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -2251,10 +2257,22 @@ dependencies = [ ] [[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", "serde", @@ -2306,9 +2324,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce292 [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -2317,24 +2335,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2342,38 +2359,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "winapi-util" @@ -2385,22 +2386,6 @@ dependencies = [ ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" -dependencies = [ - "windows-core 0.56.0", - "windows-targets 0.52.6", -] - -[[package]] name = "windows-core" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2410,49 +2395,6 @@ dependencies = [ ] [[package]] -name = "windows-core" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-implement" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "windows-interface" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.76", -] - -[[package]] -name = "windows-result" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2511,15 +2453,6 @@ dependencies = [ ] [[package]] -name = "windows-version" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2611,20 +2544,56 @@ checksum = "589f6da84c646204747d1270a2a5 [[package]] name = "winnow" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] [[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] name = "xdg" version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] name = "zerocopy" version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2641,5 +2610,48 @@ checksum = "fa4f8080344d4671fb4e831a13ad dependencies = [ "proc-macro2", "quote", - "syn 2.0.76", + "syn 2.0.90", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] --- a/meli/Cargo.toml +++ b/meli/Cargo.toml @@ -32,7 +32,8 @@ futures = { version = "0.3.30", default- indexmap = { version = "^2.3", default-features = false, features = ["serde", "std"] } itoa = { version = "1.0.11", default-features = false } libc = { version = "0.2.125", default-features = false, features = ["extra_traits"] } -libz-sys = { version = "1.1", features = ["static"], optional = true } +libz-sys = { version = "1.1" } +#libz-sys = { version = "1.1", features = ["static"], optional = true } linkify = { version = "^0.10", default-features = false } melib = { path = "../melib", version = "0.8.10", features = [] } nix = { version = "0.29", default-features = false, features = ["signal", "poll", "term", "ioctl", "process"] } @@ -50,23 +51,14 @@ toml = { version = "0.8", default-featur xdg = { version = "2.1.0" } [features] -default = ["sqlite3", "notmuch", "smtp", "dbus-notifications", "gpgme", "cli-docs", "jmap", "static"] +default = ["sqlite3", "notmuch", "smtp", "gpgme", "jmap"] notmuch = ["melib/notmuch"] jmap = ["melib/jmap"] sqlite3 = ["melib/sqlite3"] smtp = ["melib/smtp"] smtp-trace = ["smtp", "melib/smtp-trace"] -dbus-notifications = ["dep:notify-rust"] -cli-docs = ["dep:flate2"] # svgscreenshot = ["dep:svg_crate"] gpgme = ["melib/gpgme"] -# Static / vendoring features. -tls-static = ["melib/tls-static"] -http-static = ["melib/http-static"] -sqlite3-static = ["melib/sqlite3-static"] -dbus-static = ["dep:notify-rust", "notify-rust?/d_vendored"] -libz-static = ["dep:libz-sys", "libz-sys?/static"] -static = ["tls-static", "http-static", "sqlite3-static", "dbus-static", "libz-static"] # Print tracing logs as meli runs in stderr # enable for debug tracing logs: build with --features=debug-tracing and export MELI_DEBUG_STDERR @@ -86,6 +78,3 @@ predicates = { version = "3" } regex = { version = "1" } rusty-fork = { version = "0.3.0" } tempfile = { version = "3.3" } - -[target.'cfg(target_os="linux")'.dependencies] -notify-rust = { version = "^4", default-features = false, features = ["dbus"], optional = true } --- a/meli/build.rs +++ b/meli/build.rs @@ -35,61 +35,4 @@ fn main() { ("src/conf/tags.rs", "TagsSettings"), ("src/conf/pgp.rs", "PGPSettings"), ]); - #[cfg(feature = "cli-docs")] - { - use flate2::{Compression, GzBuilder}; - const MANDOC_OPTS: &[&str] = &["-T", "utf8", "-I", "os=Generated by mandoc(1)"]; - use std::{env, io::prelude::*, path::Path}; - - let out_dir = env::var("OUT_DIR").unwrap(); - let mut out_dir_path = Path::new(&out_dir).to_path_buf(); - - let mut cl = |filepath: &str, output: &str, source: bool| { - out_dir_path.push(output); - let output = if source { - std::fs::read_to_string(filepath).unwrap().into_bytes() - } else { - let output = Command::new("mandoc") - .args(MANDOC_OPTS) - .arg(filepath) - .output() - .or_else(|_| Command::new("man").arg("-l").arg(filepath).output()) - .expect( - "could not execute `mandoc` or `man`. If the binaries are not available \ - in the PATH, disable `cli-docs` feature to be able to continue \ - compilation.", - ); - output.stdout - }; - - let file = File::create(&out_dir_path).unwrap_or_else(|err| { - panic!("Could not create file {}: {}", out_dir_path.display(), err) - }); - let mut gz = GzBuilder::new() - .comment(output.len().to_string().into_bytes()) - .write(file, Compression::default()); - gz.write_all(&output).unwrap(); - gz.finish().unwrap(); - out_dir_path.pop(); - }; - - cl("docs/meli.1", "meli.txt.gz", false); - cl("docs/meli.conf.5", "meli.conf.txt.gz", false); - cl( - "docs/meli.conf.examples.5", - "meli.conf.examples.txt.gz", - false, - ); - cl("docs/meli-themes.5", "meli-themes.txt.gz", false); - cl("docs/meli.7", "meli.7.txt.gz", false); - cl("docs/meli.1", "meli.mdoc.gz", true); - cl("docs/meli.conf.5", "meli.conf.mdoc.gz", true); - cl( - "docs/meli.conf.examples.5", - "meli.conf.examples.mdoc.gz", - true, - ); - cl("docs/meli-themes.5", "meli-themes.mdoc.gz", true); - cl("docs/meli.7", "meli.7.mdoc.gz", true); - } } --- a/meli/src/args.rs +++ b/meli/src/args.rs @@ -24,8 +24,6 @@ use std::{ffi::OsStr, os::unix::ffi::OsStrExt}; use super::*; -#[cfg(feature = "cli-docs")] -use crate::manpages; fn try_path_or_stdio(input: &OsStr) -> PathOrStdio { if input.as_bytes() == b"-" { @@ -89,18 +87,7 @@ pub enum SubCommand { #[structopt(display_order = 3)] /// Testing tools such as IMAP, SMTP shells for debugging. Tools(ToolOpt), - #[structopt(visible_alias="docs", aliases=&["docs", "manpage", "manpages"])] #[structopt(display_order = 4)] - /// print documentation page and exit (Piping to a pager is recommended.). - Man(ManOpt), - #[structopt(display_order = 5)] - /// Install manual pages to the first location provided by `$MANPATH` / - /// `manpath(1)`, unless you specify the directory as an argument. - InstallMan { - #[structopt(value_name = "DESTINATION_PATH", parse(from_os_str))] - destination_path: Option, - }, - #[structopt(display_order = 6)] /// Print compile time feature flags of this binary CompiledWith, /// Print log file location. @@ -113,22 +100,6 @@ pub enum SubCommand { } #[derive(Debug, StructOpt)] -pub struct ManOpt { - /// If set, output text in stdout instead of spawning `$PAGER`. - #[cfg(feature = "cli-docs")] - #[cfg_attr(feature = "cli-docs", structopt(long = "no-raw", alias = "no-raw"))] - pub no_raw: bool, - /// If set, output compressed gzip manpage in binary form in stdout. - #[cfg(feature = "cli-docs")] - #[cfg_attr(feature = "cli-docs", structopt(long = "gzipped"))] - pub gzipped: bool, - #[cfg(feature = "cli-docs")] - #[cfg_attr(feature = "cli-docs", structopt(default_value = "meli", possible_values=manpages::POSSIBLE_VALUES, value_name="PAGE", parse(try_from_str = manpages::parse_manpage)))] - /// Name of manual page. - pub page: manpages::ManPages, -} - -#[derive(Debug, StructOpt)] pub enum ToolOpt { ImapShell { #[structopt(value_name = "CONFIG_TOML_ACCOUNT_NAME")] @@ -194,33 +165,6 @@ impl Opt { print_path(&config_path); Ok(()) } - #[cfg(not(feature = "cli-docs"))] - SubCommand::Man(ManOpt {}) => { - Err(Error::new("error: this version of meli was not build with embedded documentation (cargo feature `cli-docs`). You might have it installed as manpages (eg `man meli`), otherwise check https://meli-email.org")) - } - #[cfg(feature = "cli-docs")] - SubCommand::Man(ManOpt { - page, - no_raw, - gzipped: true, - }) => { - use std::io::Write; - - ret_err!(std::io::stdout().write_all(if no_raw { - page.text_gz() - } else { - page.mdoc_gz() - })); - Ok(()) - } - #[cfg(feature = "cli-docs")] - SubCommand::Man(ManOpt { - page, - no_raw, - gzipped: false, - }) => { - subcommands::man(page, false).and_then(|s| subcommands::pager(s, no_raw)) - } SubCommand::CompiledWith => { subcommands::compiled_with() } @@ -245,20 +189,6 @@ impl Opt { print_path(&temp_dir); Ok(()) } - #[cfg(not(feature = "cli-docs"))] - SubCommand::InstallMan { - destination_path: _, - } => { - Err(Error::new("error: this version of meli was not build with embedded documentation (cargo feature `cli-docs`). You might have it installed as manpages (eg `man meli`), otherwise check https://meli-email.org")) - } - #[cfg(feature = "cli-docs")] - SubCommand::InstallMan { destination_path } => { - match crate::manpages::ManPages::install(destination_path) { - Ok(p) => println!("Installed at {}.", p.display()), - Err(err) => return Some(Err(err)), - } - Ok(()) - } SubCommand::PrintLogPath => { let settings = ret_err!(crate::conf::Settings::new()); print_path(&settings._logger.log_dest()); --- a/meli/src/command/actions.rs +++ b/meli/src/command/actions.rs @@ -86,8 +86,6 @@ pub enum TabAction { New(Option>), ManageMailboxes, ManageJobs, - #[cfg(feature = "cli-docs")] - Man(crate::manpages::ManPages), } #[derive(Debug, Eq, PartialEq)] --- a/meli/src/command/parser.rs +++ b/meli/src/command/parser.rs @@ -146,7 +146,7 @@ pub fn view(input: &[u8]) -> IResult<&[u } pub fn new_tab(input: &[u8]) -> IResult<&[u8], Result> { - alt((manage_mailboxes, manage_jobs, compose_action, view_manpage))(input) + alt((manage_mailboxes, manage_jobs, compose_action))(input) } pub fn parse_command(input: &[u8]) -> Result { @@ -1080,40 +1080,6 @@ pub fn manage_jobs(input: &[u8]) -> IRes Ok((input, Ok(Tab(ManageJobs)))) } -pub fn view_manpage(input: &[u8]) -> IResult<&[u8], Result> { - let mut check = arg_init! { min_arg:1, max_arg: 1, view_manpage }; - let (input, _) = tag("man")(input.trim())?; - arg_chk!(start check, input); - let (input, _) = is_a(" ")(input)?; - arg_chk!(inc check, input); - #[allow(unused_variables)] - let (input, manpage) = map_res(not_line_ending, std::str::from_utf8)(input.trim())?; - let (input, _) = eof(input)?; - arg_chk!(finish check, input); - #[cfg(feature = "cli-docs")] - { - match crate::manpages::parse_manpage(manpage) { - Ok(m) => Ok((input, Ok(Tab(Man(m))))), - Err(err) => Ok(( - input, - Err(CommandError::BadValue { - inner: err.to_string().into(), - suggestions: Some(crate::manpages::POSSIBLE_VALUES), - }), - )), - } - } - #[cfg(not(feature = "cli-docs"))] - { - Ok(( - input, - Err(CommandError::Other { - inner: "this meli binary has not been compiled with the cli-docs feature".into(), - }), - )) - } -} - pub fn quit(input: &[u8]) -> IResult<&[u8], Result> { let mut check = arg_init! { min_arg:0, max_arg: 0, quit}; let (input, _) = tag("quit")(input.trim())?; --- a/meli/src/command.rs +++ b/meli/src/command.rs @@ -516,18 +516,6 @@ Alternatives(&[to_stream!(One(Literal("a tokens: &[One(Literal("manage-mailboxes"))], parser: parser::manage_mailboxes }, - { tags: ["man"], - desc: "read documentation", - tokens: { - #[cfg(feature = "cli-docs")] - { - &[One(Literal("man")), One(AlternativeStrings(crate::manpages::POSSIBLE_VALUES))] - } - #[cfg(not(feature = "cli-docs"))] - { &[] } - }, - parser: parser::view_manpage - }, { tags: ["manage-jobs"], desc: "view and manage jobs", tokens: &[One(Literal("manage-jobs"))], --- a/meli/src/lib.rs +++ b/meli/src/lib.rs @@ -107,8 +107,6 @@ pub use melib::{ }; pub mod args; -#[cfg(feature = "cli-docs")] -pub mod manpages; pub mod signal_handlers; pub mod subcommands; --- a/meli/src/main.rs +++ b/meli/src/main.rs @@ -91,12 +91,7 @@ fn run_app(mut opt: Opt) -> Result<()> { let status_bar = Box::new(StatusBar::new(&state.context, window)); state.register_component(status_bar); - #[cfg(all(target_os = "linux", feature = "dbus-notifications"))] - { - let dbus_notifications = - Box::new(notifications::DbusNotifications::new(&state.context)); - state.register_component(dbus_notifications); - } + #[cfg(all(target_os = "linux"))] state.register_component(Box::new(notifications::NotificationCommand::new())); } let enter_command_mode: Key = state --- a/meli/src/notifications.rs +++ b/meli/src/notifications.rs @@ -22,158 +22,11 @@ //! Notification handling components use std::process::{Command, Stdio}; -#[cfg(all(target_os = "linux", feature = "dbus-notifications"))] -pub use dbus::*; +#[cfg(all(target_os = "linux"))] use melib::{utils::datetime, UnixTimestamp}; use super::*; -#[cfg(all(target_os = "linux", feature = "dbus-notifications"))] -mod dbus { - use super::*; - use crate::types::RateLimit; - - /// Passes notifications to the OS using Dbus - #[derive(Debug)] - pub struct DbusNotifications { - rate_limit: RateLimit, - id: ComponentId, - } - - impl std::fmt::Display for DbusNotifications { - fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - write!(f, "") - } - } - - impl DbusNotifications { - pub fn new(context: &Context) -> Self { - Self { - rate_limit: RateLimit::new( - 1000, - 1000, - context.main_loop_handler.job_executor.clone(), - ), - id: ComponentId::default(), - } - } - } - - impl Component for DbusNotifications { - fn draw(&mut self, _grid: &mut CellBuffer, _area: Area, _context: &mut Context) {} - - fn process_event(&mut self, event: &mut UIEvent, context: &mut Context) -> bool { - if !context.settings.notifications.enable { - return false; - } - - if let UIEvent::Notification { - ref title, - source: _, - ref body, - ref kind, - } = event - { - if !self.rate_limit.tick() { - return false; - } - - let settings = &context.settings.notifications; - let mut notification = notify_rust::Notification::new(); - notification - .appname("meli") - .summary(title.as_ref().map(<_>::as_ref).unwrap_or("meli")) - .body(&escape_str(body)); - match *kind { - Some(NotificationType::NewMail) => { - notification.hint(notify_rust::Hint::Category("email".to_owned())); - notification.icon("mail-message-new"); - notification.sound_name("message-new-email"); - } - Some(NotificationType::SentMail) => { - notification.hint(notify_rust::Hint::Category("email".to_owned())); - notification.icon("mail-send"); - notification.sound_name("message-sent-email"); - } - Some(NotificationType::Saved) => { - notification.icon("document-save"); - } - Some(NotificationType::Info) => { - notification.icon("dialog-information"); - } - Some(NotificationType::Error(melib::ErrorKind::Authentication)) => { - notification.icon("dialog-password"); - } - Some(NotificationType::Error(melib::ErrorKind::Bug)) => { - notification.icon("face-embarrassed"); - } - Some(NotificationType::Error(melib::ErrorKind::None)) - | Some(NotificationType::Error(melib::ErrorKind::External)) => { - notification.icon("dialog-error"); - } - Some(NotificationType::Error(melib::ErrorKind::Network(_))) => { - notification.icon("network-error"); - } - Some(NotificationType::Error(melib::ErrorKind::TimedOut)) => { - notification.icon("network-offline"); - } - _ => {} - } - if settings.play_sound.is_true() { - if let Some(ref sound_path) = settings.sound_file { - notification.hint(notify_rust::Hint::SoundFile(sound_path.to_owned())); - } - } else { - notification.hint(notify_rust::Hint::SuppressSound(true)); - } - - if let Err(err) = notification.show() { - log::error!("Could not show dbus notification: {err}"); - } - } - false - } - - fn set_dirty(&mut self, _value: bool) {} - - fn is_dirty(&self) -> bool { - false - } - - fn id(&self) -> ComponentId { - self.id - } - } - - fn escape_str(s: &str) -> String { - let mut ret: String = String::with_capacity(s.len()); - for c in s.chars() { - match c { - '&' => ret.push_str("&"), - '<' => ret.push_str("<"), - '>' => ret.push_str(">"), - '\'' => ret.push_str("'"), - '"' => ret.push_str("""), - _ => { - let i = c as u32; - if (0x1..=0x8).contains(&i) - || (0xb..=0xc).contains(&i) - || (0xe..=0x1f).contains(&i) - || (0x7f..=0x84).contains(&i) - || (0x86..=0x9f).contains(&i) - { - use std::fmt::Write; - let _ = write!(ret, "&#{:x}%{:x};", i, i); - } else { - ret.push(c); - } - } - } - } - ret - } -} - /// Passes notifications to a user defined shell command #[derive(Debug, Default)] pub struct NotificationCommand { --- a/meli/src/state.rs +++ b/meli/src/state.rs @@ -900,27 +900,6 @@ impl State { ))) .unwrap(); } - #[cfg(feature = "cli-docs")] - Tab(Man(manpage)) => match manpage - .read(false) - .map(|text| crate::manpages::ManPages::remove_markup(&text).unwrap_or(text)) - { - Ok(m) => self.rcv_event(UIEvent::Action(Tab(New(Some(Box::new( - Pager::from_string( - m, - &self.context, - None, - None, - crate::conf::value(&self.context, "theme_default"), - ), - )))))), - Err(err) => self.context.replies.push_back(UIEvent::Notification { - title: None, - body: "Encountered an error while retrieving manual page.".into(), - source: Some(err), - kind: Some(NotificationType::Error(ErrorKind::Bug)), - }), - }, v => { self.rcv_event(UIEvent::Action(v)); } --- a/meli/src/subcommands.rs +++ b/meli/src/subcommands.rs @@ -76,36 +76,6 @@ pub fn edit_config() -> Result<()> { Ok(()) } -#[cfg(feature = "cli-docs")] -pub fn man(page: manpages::ManPages, source: bool) -> Result { - page.read(source) -} - -#[cfg(feature = "cli-docs")] -pub fn pager(v: String, no_raw: bool) -> Result<()> { - if no_raw || !terminal::is_tty() { - println!("{v}"); - return Ok(()); - } - - let mut handle = Command::new("sh") - .arg("-c") - .arg(std::env::var("PAGER").unwrap_or_else(|_| "more".to_string())) - .stdin(Stdio::piped()) - .stdout(Stdio::inherit()) - .stderr(Stdio::inherit()) - .spawn()?; - handle.stdin.take().unwrap().write_all(v.as_bytes())?; - handle.wait()?; - - Ok(()) -} - -#[cfg(not(feature = "cli-docs"))] -pub fn man(_: args::ManOpt) -> Result<()> { - Err(Error::new("error: this version of meli was not build with embedded documentation (cargo feature `cli-docs`). You might have it installed as manpages (eg `man meli`), otherwise check https://meli-email.org")) -} - pub fn compiled_with() -> Result<()> { #[cfg(feature = "notmuch")] println!("notmuch"); @@ -115,10 +85,6 @@ pub fn compiled_with() -> Result<()> { println!("sqlite3"); #[cfg(feature = "smtp")] println!("smtp"); - #[cfg(feature = "dbus-notifications")] - println!("dbus-notifications"); - #[cfg(feature = "cli-docs")] - println!("cli-docs"); #[cfg(feature = "gpgme")] println!("gpgme"); Ok(()) --- a/meli/tests/test_cli_subcommands.rs +++ b/meli/tests/test_cli_subcommands.rs @@ -70,8 +70,6 @@ fn test_cli_subcommands() { .stdout(predicates::str::contains("create-config")) .stdout(predicates::str::contains("test-config")) .stdout(predicates::str::contains("tools")) - .stdout(predicates::str::contains("man")) - .stdout(predicates::str::contains("install-man")) .stdout(predicates::str::contains("compiled-with")) .stdout(predicates::str::contains("edit-config")) .stdout(predicates::str::contains("help")) @@ -96,27 +94,6 @@ fn test_cli_subcommands() { output.code(0).stdout(predicates::str::is_empty()); } - fn test_subcommand_install_man(dir: &Path) { - let mut cmd = Command::cargo_bin("meli").unwrap(); - let output = cmd.arg("install-man").arg(dir).output().unwrap().assert(); - output.code(0).stdout(predicates::str::is_empty().not()); - let mut path = dir.to_path_buf(); - for (man, dir) in [ - ("meli.1", "man1"), - ("meli.conf.5", "man5"), - ("meli.conf.examples.5", "man5"), - ("meli-themes.5", "man5"), - ("meli.7", "man7"), - ] { - path.push(dir); - assert!(path.is_dir()); - path.push(man); - assert!(path.is_file()); - path.pop(); - path.pop(); - } - } - fn test_subcommand_config_stdio() { { let mut cmd = Command::cargo_bin("meli").unwrap(); @@ -148,79 +125,14 @@ server_password_command = "false" } } - fn test_subcommand_man() { - for (man, title) in [ - ("meli.1", "MELI(1)"), - ("meli.conf.5", "MELI.CONF(5)"), - ("meli.conf.examples.5", "MELI.CONF.EXAMPLES(5)"), - ("meli-themes.5", "MELI-THEMES(5)"), - ("meli.7", "MELI(7)"), - ] { - let true_true: &[&str] = &["man", "--no-raw", "--gzipped", man]; - let true_false: &[&str] = &["man", "--no-raw", man]; - let false_false: &[&str] = &["man", man]; - let false_true: &[&str] = &["man", "--gzipped", man]; - for gzipped in [true, false] { - for no_raw in [true, false] { - let mut cmd = Command::cargo_bin("meli").unwrap(); - let args = match (no_raw, gzipped) { - (true, true) => true_true, - (true, false) => true_false, - (false, false) => false_false, - (false, true) => false_true, - }; - let output = cmd.args(args).output().unwrap().assert(); - output.code(0).stdout(predicate::function(|x: &[u8]| { - use std::io::Read; - - use flate2::bufread::GzDecoder; - - let mut gz = GzDecoder::new(x); - let content = if gzipped { - let size = gz.header().unwrap().comment().unwrap(); - - let mut v = String::with_capacity( - str::parse::( - std::str::from_utf8(size) - .expect("was not compressed with size comment header"), - ) - .expect("was not compressed with size comment header"), - ); - gz.read_to_string(&mut v) - .expect("expected gzipped output but could not decode it."); - v - } else { - assert_eq!(gz.header(), None); - let mut v = String::with_capacity(0); - gz.read_to_string(&mut v).unwrap_err(); - String::from_utf8(x.to_vec()).expect("invalid utf-8 content") - }; - if !no_raw && gzipped { - assert!(content.contains(man)); - } else { - assert!(content.contains('\u{8}')); - assert!(content.contains(title)); - } - - true - })); - } - } - } - } - version(); help(); test_subcommand_succeeds("help"); test_subcommand_succeeds("compiled-with"); - test_subcommand_succeeds("man"); - test_subcommand_man(); test_subcommand_config_stdio(); let tmp_dir = TempDir::new().unwrap(); - test_subcommand_install_man(tmp_dir.path()); - fn config_not_exists(conf: &Path) { let mut cmd = Command::cargo_bin("meli").unwrap(); let output = cmd.arg("-c").arg(conf).output().unwrap().assert();