From 1f478ec9fc086e6626a9ca9dd7cb290b48000440 Mon Sep 17 00:00:00 2001 From: Wyatt Verchere Date: Wed, 19 Jul 2023 14:13:25 -0700 Subject: [PATCH] Bug fixes round 3 (#298) * fixed bugs * title case * bugs; ioerror * reset breadcrumbs * more fixes * more fixes * scrolling bug * more fixes * more fixes * clippy * canonicalize fix * fixed requested changes * removed debouncer update --- Cargo.lock | 882 +++++++++--------- theseus/Cargo.toml | 2 +- theseus/src/api/handler.rs | 11 +- theseus/src/api/jre.rs | 3 +- theseus/src/api/logs.rs | 30 +- theseus/src/api/mod.rs | 5 +- theseus/src/api/pack/install_from.rs | 4 +- theseus/src/api/process.rs | 10 +- theseus/src/api/profile.rs | 61 +- theseus/src/api/profile_create.rs | 9 +- theseus/src/error.rs | 4 +- theseus/src/launcher/args.rs | 7 +- theseus/src/launcher/download.rs | 12 +- theseus/src/launcher/mod.rs | 27 +- theseus/src/state/children.rs | 93 +- theseus/src/state/profiles.rs | 41 +- theseus/src/state/projects.rs | 9 +- theseus/src/util/fetch.rs | 21 +- theseus/src/util/io.rs | 149 +++ theseus/src/util/jre.rs | 4 +- theseus/src/util/mod.rs | 1 + theseus_gui/src/App.vue | 9 +- .../src/components/OnboardingModal.vue | 11 +- theseus_gui/src/components/ui/Breadcrumbs.vue | 1 + .../src/components/ui/RunningAppBar.vue | 2 +- .../src/components/ui/SplashScreen.vue | 1 + theseus_gui/src/pages/Browse.vue | 50 +- theseus_gui/src/pages/instance/Mods.vue | 16 +- theseus_gui/src/pages/instance/Options.vue | 4 + theseus_gui/src/pages/project/Index.vue | 4 +- theseus_gui/src/pages/project/Version.vue | 26 +- theseus_gui/src/pages/project/Versions.vue | 6 +- theseus_gui/src/store/breadcrumbs.js | 15 +- theseus_playground/src/main.rs | 4 +- 34 files changed, 932 insertions(+), 602 deletions(-) create mode 100644 theseus/src/util/io.rs diff --git a/Cargo.lock b/Cargo.lock index 0542cc180..606ed0435 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" dependencies = [ "gimli", ] @@ -19,14 +19,13 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", ] [[package]] @@ -38,6 +37,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -79,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "argh" @@ -230,7 +238,7 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -247,14 +255,14 @@ checksum = "b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] name = "async-tungstenite" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a48bf42ab2178374a79853bceef600e279258c75049b20481b022d73c908882" +checksum = "ce01ac37fdc85f10a43c43bc582cbd566720357011578a935761075f898baf58" dependencies = [ "futures-io", "futures-util", @@ -304,7 +312,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -321,9 +329,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" dependencies = [ "addr2line", "cc", @@ -342,9 +350,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" @@ -363,9 +371,9 @@ dependencies = [ [[package]] name = "bincode" -version = "2.0.0-rc.2" +version = "2.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb50c5a2ef4b9b1e7ae73e3a73b52ea24b20312d629f9c4df28260b7ad2c3c4" +checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95" dependencies = [ "bincode_derive", "serde", @@ -373,9 +381,9 @@ dependencies = [ [[package]] name = "bincode_derive" -version = "2.0.0-rc.2" +version = "2.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a45a23389446d2dd25dc8e73a7a3b3c43522b630cac068927f0649d43d719d2" +checksum = "7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c" dependencies = [ "virtue", ] @@ -388,9 +396,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6776fc96284a0bb647b615056fc496d1fe1644a7ab01829818a6d91cae888b84" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] name = "block" @@ -454,9 +462,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" +checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" dependencies = [ "memchr", "serde", @@ -464,9 +472,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytemuck" @@ -531,17 +539,17 @@ checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ "glib-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] name = "cargo_toml" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f83bc2e401ed041b7057345ebc488c005efa0341d5541ce7004d30458d0090b" +checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" dependencies = [ "serde", - "toml 0.7.3", + "toml 0.7.5", ] [[package]] @@ -581,11 +589,12 @@ dependencies = [ [[package]] name = "cfg-expr" -version = "0.14.0" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35b255461940a32985c627ce82900867c61db1659764d3675ea81963f72a4c6" +checksum = "215c0072ecc28f92eeb0eea38ba63ddfcb65c2828c46311d646f1a3ff5f9841c" dependencies = [ "smallvec", + "target-lexicon", ] [[package]] @@ -612,11 +621,12 @@ dependencies = [ [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] @@ -650,16 +660,6 @@ dependencies = [ "objc", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "color-eyre" version = "0.6.2" @@ -714,15 +714,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.5" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", "libc", "unicode-width", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -749,9 +749,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "core-graphics" @@ -768,21 +768,20 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" dependencies = [ "bitflags 1.3.2", "core-foundation", - "foreign-types", "libc", ] [[package]] name = "cpufeatures" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280a9f2d8b3a38871a3c8a46fb80db65e5e5ed97da80c4d08bf27fb63e35e181" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -823,9 +822,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -833,9 +832,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -869,12 +868,12 @@ dependencies = [ [[package]] name = "cssparser-macros" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] @@ -887,57 +886,13 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.18", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.18", -] - [[package]] name = "daedalus" version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d14d655650f5f0fd5b88946d4add0f1b02d866e40632304cfe1427240bfd2430" dependencies = [ - "bincode 2.0.0-rc.2", + "bincode 2.0.0-rc.3", "bytes", "chrono", "reqwest", @@ -993,7 +948,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -1015,14 +970,14 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ "darling_core 0.20.1", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "debugid" @@ -1060,9 +1015,9 @@ dependencies = [ [[package]] name = "dialoguer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af3c796f3b0b408d9fd581611b47fa850821fcb84aa640b83a3c1a5be2d691f2" +checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" dependencies = [ "console", "shell-words", @@ -1081,9 +1036,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", @@ -1160,24 +1115,24 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dtoa" -version = "0.4.8" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" +checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" [[package]] name = "dtoa-short" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" dependencies = [ "dtoa", ] [[package]] name = "dunce" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "embed-resource" @@ -1187,7 +1142,7 @@ checksum = "80663502655af01a2902dff3f06869330782267924bf1788410b74edcd93770a" dependencies = [ "cc", "rustc_version", - "toml 0.7.3", + "toml 0.7.5", "vswhom", "winreg 0.11.0", ] @@ -1242,9 +1197,15 @@ checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] +[[package]] +name = "equivalent" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" + [[package]] name = "errno" version = "0.3.1" @@ -1292,25 +1253,34 @@ dependencies = [ ] [[package]] -name = "field-offset" -version = "0.3.5" +name = "fdeflate" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" +checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" dependencies = [ - "memoffset 0.8.0", + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset 0.9.0", "rustc_version", ] [[package]] name = "filetime" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a3de6e8d11b22ff9edc6d916f890800597d60f8b2da1caf2955c274638d6412" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if", "libc", "redox_syscall 0.2.16", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -1327,9 +1297,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", "miniz_oxide", @@ -1358,9 +1328,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -1386,9 +1356,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ "futures-channel", "futures-core", @@ -1417,9 +1387,9 @@ checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-executor" -version = "0.3.27" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ "futures-core", "futures-task", @@ -1455,7 +1425,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -1536,7 +1506,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1553,7 +1523,7 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1567,7 +1537,7 @@ dependencies = [ "gobject-sys", "libc", "pkg-config", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1579,21 +1549,21 @@ dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", "x11", ] [[package]] name = "generator" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a20a288a94683f5f4da0adecdbe095c94a77c295e514cc6484e9394dd8376e" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" dependencies = [ "cc", "libc", "log", "rustversion", - "windows 0.44.0", + "windows 0.48.0", ] [[package]] @@ -1619,9 +1589,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -1630,9 +1600,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] name = "gio" @@ -1660,7 +1630,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", "winapi", ] @@ -1706,7 +1676,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" dependencies = [ "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1721,7 +1691,7 @@ version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" dependencies = [ - "aho-corasick", + "aho-corasick 0.7.20", "bstr", "fnv", "log", @@ -1736,7 +1706,7 @@ checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" dependencies = [ "glib-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1788,7 +1758,7 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -1807,9 +1777,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.16" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be7b54589b581f624f566bf5d8eb2bab1db736c51528720b6bd36b96b55924d" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes", "fnv", @@ -1817,7 +1787,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 1.9.3", "slab", "tokio", "tokio-util", @@ -1830,6 +1800,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + [[package]] name = "heck" version = "0.3.3" @@ -1845,15 +1821,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.1" @@ -1872,7 +1839,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -1942,9 +1909,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.25" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc5e554ff619822309ffd57d8734d77cd5ce6238bc956f037ea06c58238c9899" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1979,26 +1946,25 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.54" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c17cc76786e99f8d2f055c11159e7f0091c42474dcc3189fbab96072e873e6d" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows 0.46.0", + "windows 0.48.0", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -2019,9 +1985,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -2029,11 +1995,10 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" dependencies = [ - "crossbeam-utils", "globset", "lazy_static", "log", @@ -2071,17 +2036,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.3", "serde", ] [[package]] -name = "indicatif" -version = "0.17.3" +name = "indexmap" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef509aa9bc73864d6756f0d34d35504af3cf0844373afe9b8669a5b8005a729" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "indicatif" +version = "0.17.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ff8cc23a7393a397ed1d7f56e6365cba772aba9f9912ab968b03043c395d057" dependencies = [ "console", + "instant", "number_prefix", "portable-atomic", "unicode-width", @@ -2116,6 +2092,15 @@ dependencies = [ "libc", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "instant" version = "0.1.12" @@ -2140,20 +2125,20 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "itoa" @@ -2235,9 +2220,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -2294,9 +2279,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.140" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "line-wrap" @@ -2307,26 +2292,17 @@ dependencies = [ "safemem", ] -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linux-raw-sys" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -2334,12 +2310,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "loom" @@ -2470,9 +2443,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -2560,23 +2533,24 @@ checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" [[package]] name = "miniz_oxide" -version = "0.6.2" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", + "simd-adler32", ] [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -2692,9 +2666,9 @@ checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" [[package]] name = "notify" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ea850aa68a06e48fdb069c0ec44d0d64c8dbffa49bf3b6f7f0a901fdea1ba9" +checksum = "729f63e1ca555a43fe3efa4f3efdf4801c479da85b432242a7b726f353c88486" dependencies = [ "bitflags 1.3.2", "crossbeam-channel", @@ -2705,7 +2679,7 @@ dependencies = [ "libc", "mio", "walkdir", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2768,11 +2742,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -2797,15 +2771,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - [[package]] name = "number_prefix" version = "0.4.0" @@ -2875,18 +2840,18 @@ dependencies = [ [[package]] name = "object" -version = "0.30.3" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" @@ -2906,9 +2871,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.48" +version = "0.10.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" dependencies = [ "bitflags 1.3.2", "cfg-if", @@ -2921,13 +2886,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] @@ -2938,11 +2903,10 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.83" +version = "0.9.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" dependencies = [ - "autocfg", "cc", "libc", "pkg-config", @@ -3010,7 +2974,7 @@ dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -3024,9 +2988,9 @@ dependencies = [ [[package]] name = "paris" -version = "1.5.13" +version = "1.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eaf2319cd71dd9ff38c72bebde61b9ea657134abcf26ae4205f54f772a32810" +checksum = "8fecab3723493c7851f292cb060f3ee1c42f19b8d749345d0d7eaf3fd19aa62d" [[package]] name = "parking" @@ -3046,15 +3010,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.1", ] [[package]] @@ -3086,17 +3050,17 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", "hmac", "password-hash", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "phf" @@ -3198,22 +3162,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "6e138fdd8263907a2b0e1b4e80b7e58c721126479b6e6eedfb1b402acea7b9bd" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "d1fef411b303e3e12d534fb6e7852de82da56edd937d895125821fb7c09436c7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] @@ -3230,9 +3194,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plain" @@ -3246,22 +3210,23 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" dependencies = [ - "base64 0.21.0", - "indexmap", + "base64 0.21.2", + "indexmap 1.9.3", "line-wrap", "quick-xml", "serde", - "time 0.3.15", + "time 0.3.22", ] [[package]] name = "png" -version = "0.17.7" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" dependencies = [ "bitflags 1.3.2", "crc32fast", + "fdeflate", "flate2", "miniz_oxide", ] @@ -3284,9 +3249,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "0.3.19" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b" +checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" [[package]] name = "ppv-lite86" @@ -3342,27 +3307,27 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.59" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6aeca18b86b413c660b781aa319e4e2648a3e6f9eadc9b47e9038e6fe9f3451b" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.28.1" +version = "0.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c1a97b1bc42b1d550bfb48d4262153fe400a12bab1511821736f7eac76d7e2" +checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.28" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" dependencies = [ "proc-macro2", ] @@ -3427,7 +3392,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -3487,20 +3452,20 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.3" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ - "aho-corasick", + "aho-corasick 1.0.2", "memchr", - "regex-syntax", + "regex-syntax 0.7.2", ] [[package]] @@ -3509,7 +3474,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.29", ] [[package]] @@ -3519,12 +3484,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "reqwest" -version = "0.11.16" +name = "regex-syntax" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b71749df584b7f4cac2c426c127a7c785a5106cc98f7a8feb044115f0fa254" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" + +[[package]] +name = "reqwest" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "bytes", "encoding_rs", "futures-core", @@ -3583,9 +3554,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc_version" @@ -3598,16 +3569,16 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.7" +version = "0.37.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aae838e49b3d63e9274e1c01833cc8139d3fec468c3b84688c628f44b1ae11d" +checksum = "62f25693a73057a1b4cb56179dd3c7ea21a7c6c5ee7d85781f5749b46f34b79c" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -3658,12 +3629,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "scroll" version = "0.11.0" @@ -3675,20 +3640,20 @@ dependencies = [ [[package]] name = "scroll_derive" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" +checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "security-framework" -version = "2.8.2" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -3699,9 +3664,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" dependencies = [ "core-foundation-sys", "libc", @@ -3832,41 +3797,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "360ee3270f7a4a1eee6c667f7d38360b995431598a73b740dfe420da548d9cc9" dependencies = [ "debugid", - "getrandom 0.2.8", + "getrandom 0.2.10", "hex", "serde", "serde_json", "thiserror", - "time 0.3.15", + "time 0.3.22", "url", "uuid", ] [[package]] name = "serde" -version = "1.0.159" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.159" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] name = "serde_json" -version = "1.0.95" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744" +checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ "itoa 1.0.6", "ryu", @@ -3881,14 +3846,14 @@ checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] name = "serde_spanned" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" dependencies = [ "serde", ] @@ -3911,14 +3876,14 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "chrono", "hex", - "indexmap", + "indexmap 1.9.3", "serde", "serde_json", "serde_with_macros", - "time 0.3.15", + "time 0.3.22", ] [[package]] @@ -3930,7 +3895,7 @@ dependencies = [ "darling 0.20.1", "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -3982,7 +3947,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4006,13 +3971,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -4049,6 +4014,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" + [[package]] name = "siphasher" version = "0.3.10" @@ -4174,9 +4145,9 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -4191,9 +4162,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.18" +version = "2.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" +checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" dependencies = [ "proc-macro2", "quote", @@ -4238,14 +4209,14 @@ dependencies = [ [[package]] name = "system-deps" -version = "6.0.4" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555fc8147af6256f3931a36bb83ad0023240ce9cf2b319dec8236fd1f220b05f" +checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" dependencies = [ - "cfg-expr 0.14.0", + "cfg-expr 0.15.3", "heck 0.4.1", "pkg-config", - "toml 0.7.3", + "toml 0.7.5", "version-compare 0.1.1", ] @@ -4339,6 +4310,12 @@ dependencies = [ "xattr", ] +[[package]] +name = "target-lexicon" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" + [[package]] name = "tauri" version = "1.4.1" @@ -4346,7 +4323,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fbe522898e35407a8e60dc3870f7579fea2fc262a6a6072eccdd37ae1e1d91e" dependencies = [ "anyhow", - "base64 0.21.0", + "base64 0.21.2", "bytes", "cocoa", "dirs-next", @@ -4385,7 +4362,7 @@ dependencies = [ "tauri-utils", "tempfile", "thiserror", - "time 0.3.15", + "time 0.3.22", "tokio", "url", "uuid", @@ -4397,9 +4374,9 @@ dependencies = [ [[package]] name = "tauri-build" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "929b3bd1248afc07b63e33a6a53c3f82c32d0b0a5e216e4530e94c467e019389" +checksum = "7d2edd6a259b5591c8efdeb9d5702cb53515b82a6affebd55c7fd6d3a27b7d1b" dependencies = [ "anyhow", "cargo_toml", @@ -4410,7 +4387,6 @@ dependencies = [ "serde_json", "tauri-utils", "tauri-winres", - "winnow", ] [[package]] @@ -4419,7 +4395,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54ad2d49fdeab4a08717f5b49a163bdc72efc3b1950b6758245fcde79b645e1a" dependencies = [ - "base64 0.21.0", + "base64 0.21.2", "brotli", "ico", "json-patch", @@ -4431,10 +4407,10 @@ dependencies = [ "semver", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "tauri-utils", "thiserror", - "time 0.3.15", + "time 0.3.22", "uuid", "walkdir", ] @@ -4472,7 +4448,7 @@ dependencies = [ [[package]] name = "tauri-plugin-single-instance" version = "0.0.0" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#07406f1c9d7817c95dc9ebf4bfe2cdb1ea352045" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#36b7296746bf8d41f0790d8ecd9b097430750a47" dependencies = [ "log", "serde", @@ -4486,10 +4462,10 @@ dependencies = [ [[package]] name = "tauri-plugin-window-state" version = "0.1.0" -source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#07406f1c9d7817c95dc9ebf4bfe2cdb1ea352045" +source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#36b7296746bf8d41f0790d8ecd9b097430750a47" dependencies = [ "bincode 1.3.3", - "bitflags 2.3.1", + "bitflags 2.3.3", "log", "serde", "serde_json", @@ -4574,20 +4550,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" dependencies = [ "embed-resource", - "toml 0.7.3", + "toml 0.7.5", ] [[package]] name = "tempfile" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", "redox_syscall 0.3.5", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -4601,15 +4578,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - [[package]] name = "theseus" version = "0.2.2" @@ -4641,7 +4609,7 @@ dependencies = [ "thiserror", "tokio", "tokio-stream", - "toml 0.7.3", + "toml 0.7.5", "tracing", "tracing-appender", "tracing-error 0.1.2", @@ -4766,7 +4734,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -4792,14 +4760,29 @@ dependencies = [ [[package]] name = "time" -version = "0.3.15" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ "itoa 1.0.6", - "libc", - "num_threads", "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +dependencies = [ + "time-core", ] [[package]] @@ -4825,11 +4808,12 @@ checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8" [[package]] name = "tokio" -version = "1.27.0" +version = "1.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" dependencies = [ "autocfg", + "backtrace", "bytes", "libc", "mio", @@ -4839,18 +4823,18 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.18", + "syn 2.0.22", ] [[package]] @@ -4865,9 +4849,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -4876,9 +4860,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -4900,9 +4884,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" +checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" dependencies = [ "serde", "serde_spanned", @@ -4912,20 +4896,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" dependencies = [ - "indexmap", + "indexmap 2.0.0", "serde", "serde_spanned", "toml_datetime", @@ -4964,20 +4948,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", "valuable", @@ -5151,9 +5135,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" @@ -5178,11 +5162,11 @@ checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "ureq" -version = "2.6.2" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338b31dd1314f68f3aabf3ed57ab922df95ffcd902476ca7ba3c4ce7b908c46d" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" dependencies = [ - "base64 0.13.1", + "base64 0.21.2", "log", "native-tls", "once_cell", @@ -5191,9 +5175,9 @@ dependencies = [ [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", @@ -5209,11 +5193,11 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" +checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "serde", ] @@ -5249,9 +5233,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "virtue" -version = "0.0.8" +version = "0.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b60dcd6a64dd45abf9bd426970c9843726da7fc08f44cd6fcebf68c21220a63" +checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314" [[package]] name = "vswhom" @@ -5291,11 +5275,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -5319,9 +5302,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5329,24 +5312,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -5356,9 +5339,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5366,22 +5349,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" @@ -5398,9 +5381,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -5464,7 +5447,7 @@ dependencies = [ "pango-sys", "pkg-config", "soup2-sys", - "system-deps 6.0.4", + "system-deps 6.1.1", ] [[package]] @@ -5507,9 +5490,9 @@ dependencies = [ [[package]] name = "whoami" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c70234412ca409cc04e864e89523cb0fc37f5e1344ebed5a3ebf4192b6b9f68" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" dependencies = [ "wasm-bindgen", "web-sys", @@ -5593,20 +5576,11 @@ dependencies = [ [[package]] name = "windows" -version = "0.44.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" -dependencies = [ - "windows-targets 0.42.2", + "windows-targets 0.48.1", ] [[package]] @@ -5665,7 +5639,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.1", ] [[package]] @@ -5685,9 +5659,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" dependencies = [ "windows_aarch64_gnullvm 0.48.0", "windows_aarch64_msvc 0.48.0", @@ -5850,9 +5824,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -5912,7 +5886,7 @@ dependencies = [ "once_cell", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "soup2", "tao", "thiserror", @@ -5975,9 +5949,9 @@ dependencies = [ [[package]] name = "zbus" -version = "3.13.1" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c3d77c9966c28321f1907f0b6c5a5561189d1f7311eea6d94180c6be9daab29" +checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" dependencies = [ "async-broadcast", "async-executor", @@ -5988,6 +5962,7 @@ dependencies = [ "async-recursion", "async-task", "async-trait", + "blocking", "byteorder", "derivative", "enumflags2", @@ -6015,24 +5990,23 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.13.1" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e341d12edaff644e539ccbbf7f161601294c9a84ed3d7e015da33155b435af" +checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", "regex", "syn 1.0.109", - "winnow", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.5.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82441e6033be0a741157a72951a3e4957d519698f3a824439cc131c5ba77ac2a" +checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" dependencies = [ "serde", "static_assertions", @@ -6047,9 +6021,9 @@ checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" [[package]] name = "zip" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e92305c174683d78035cbf1b70e18db6329cc0f1b9cae0a52ca90bf5bfe7125" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ "aes", "byteorder", @@ -6061,7 +6035,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1 0.10.5", - "time 0.3.15", + "time 0.3.22", "zstd", ] @@ -6097,9 +6071,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622cc473f10cef1b0d73b7b34a266be30ebdcfaea40ec297dd8cbda088f9f93c" +checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" dependencies = [ "byteorder", "enumflags2", @@ -6111,9 +6085,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d9c1b57352c25b778257c661f3c4744b7cefb7fc09dd46909a153cce7773da2" +checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" dependencies = [ "proc-macro-crate", "proc-macro2", diff --git a/theseus/Cargo.toml b/theseus/Cargo.toml index c24cafca0..08b043119 100644 --- a/theseus/Cargo.toml +++ b/theseus/Cargo.toml @@ -31,7 +31,7 @@ thiserror = "1.0" tracing = "0.1.37" tracing-subscriber = {version = "0.2", features = ["chrono"]} -tracing-error = "0.1" +tracing-error = "0.1.0" tracing-appender = "0.1" paste = { version = "1.0"} diff --git a/theseus/src/api/handler.rs b/theseus/src/api/handler.rs index 8180f16ff..fd6b766ec 100644 --- a/theseus/src/api/handler.rs +++ b/theseus/src/api/handler.rs @@ -1,8 +1,11 @@ use std::path::PathBuf; -use crate::event::{ - emit::{emit_command, emit_warning}, - CommandPayload, +use crate::{ + event::{ + emit::{emit_command, emit_warning}, + CommandPayload, + }, + util::io, }; /// Handles external functions (such as through URL deep linkage) @@ -46,7 +49,7 @@ pub async fn parse_command( } else { // We assume anything else is a filepath to an .mrpack file let path = PathBuf::from(command_string); - let path = path.canonicalize()?; + let path = io::canonicalize(path)?; if let Some(ext) = path.extension() { if ext == "mrpack" { return Ok(CommandPayload::RunMRPack { path }); diff --git a/theseus/src/api/jre.rs b/theseus/src/api/jre.rs index 1d1d3d37f..3a2d43a6d 100644 --- a/theseus/src/api/jre.rs +++ b/theseus/src/api/jre.rs @@ -5,6 +5,7 @@ use std::path::PathBuf; use crate::event::emit::{emit_loading, init_loading}; use crate::util::fetch::{fetch_advanced, fetch_json}; +use crate::util::io; use crate::util::jre::extract_java_majorminor_version; use crate::{ state::JavaGlobals, @@ -114,7 +115,7 @@ pub async fn auto_install_java(java_version: u32) -> crate::Result { let path = state.directories.java_versions_dir(); if path.exists() { - tokio::fs::remove_dir_all(&path).await?; + io::remove_dir_all(&path).await?; } let mut archive = zip::ZipArchive::new(std::io::Cursor::new(file)) diff --git a/theseus/src/api/logs.rs b/theseus/src/api/logs.rs index 0936ad0c1..b1b49ace7 100644 --- a/theseus/src/api/logs.rs +++ b/theseus/src/api/logs.rs @@ -1,6 +1,8 @@ -use crate::State; +use crate::{ + util::io::{self, IOError}, + State, +}; use serde::{Deserialize, Serialize}; -use tokio::fs::read_to_string; #[derive(Serialize, Deserialize, Debug)] pub struct Logs { @@ -36,8 +38,11 @@ pub async fn get_logs( let logs_folder = state.directories.profile_logs_dir(profile_uuid); let mut logs = Vec::new(); if logs_folder.exists() { - for entry in std::fs::read_dir(logs_folder)? { - let entry = entry?; + for entry in std::fs::read_dir(&logs_folder) + .map_err(|e| IOError::with_path(e, &logs_folder))? + { + let entry = + entry.map_err(|e| IOError::with_path(e, &logs_folder))?; let path = entry.path(); if path.is_dir() { if let Some(datetime_string) = path.file_name() { @@ -79,21 +84,21 @@ pub async fn get_output_by_datetime( ) -> crate::Result { let state = State::get().await?; let logs_folder = state.directories.profile_logs_dir(profile_uuid); - Ok( - read_to_string(logs_folder.join(datetime_string).join("stdout.log")) - .await?, - ) + let path = logs_folder.join(datetime_string).join("stdout.log"); + Ok(io::read_to_string(&path).await?) } #[tracing::instrument] pub async fn delete_logs(profile_uuid: uuid::Uuid) -> crate::Result<()> { let state = State::get().await?; let logs_folder = state.directories.profile_logs_dir(profile_uuid); - for entry in std::fs::read_dir(logs_folder)? { - let entry = entry?; + for entry in std::fs::read_dir(&logs_folder) + .map_err(|e| IOError::with_path(e, &logs_folder))? + { + let entry = entry.map_err(|e| IOError::with_path(e, &logs_folder))?; let path = entry.path(); if path.is_dir() { - std::fs::remove_dir_all(path)?; + io::remove_dir_all(&path).await?; } } Ok(()) @@ -106,6 +111,7 @@ pub async fn delete_logs_by_datetime( ) -> crate::Result<()> { let state = State::get().await?; let logs_folder = state.directories.profile_logs_dir(profile_uuid); - std::fs::remove_dir_all(logs_folder.join(datetime_string))?; + let path = logs_folder.join(datetime_string); + io::remove_dir_all(&path).await?; Ok(()) } diff --git a/theseus/src/api/mod.rs b/theseus/src/api/mod.rs index ce1d77d2c..cd0277d31 100644 --- a/theseus/src/api/mod.rs +++ b/theseus/src/api/mod.rs @@ -29,7 +29,10 @@ pub mod prelude { profile::{self, Profile}, profile_create, settings, state::JavaGlobals, - util::jre::JavaVersion, + util::{ + io::{canonicalize, IOError}, + jre::JavaVersion, + }, State, }; } diff --git a/theseus/src/api/pack/install_from.rs b/theseus/src/api/pack/install_from.rs index 419bbf1f6..dff8ec2c1 100644 --- a/theseus/src/api/pack/install_from.rs +++ b/theseus/src/api/pack/install_from.rs @@ -6,6 +6,7 @@ use crate::state::{LinkedData, ModrinthProject, ModrinthVersion, SideType}; use crate::util::fetch::{ fetch, fetch_advanced, fetch_json, write_cached_icon, }; +use crate::util::io; use crate::State; use reqwest::Method; @@ -13,7 +14,6 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::path::PathBuf; -use tokio::fs; #[derive(Serialize, Deserialize, Eq, PartialEq)] #[serde(rename_all = "camelCase")] @@ -263,7 +263,7 @@ pub async fn generate_pack_from_file( path: PathBuf, profile: PathBuf, ) -> crate::Result { - let file = fs::read(&path).await?; + let file = io::read(&path).await?; Ok(CreatePackDescription { file: bytes::Bytes::from(file), icon: None, diff --git a/theseus/src/api/process.rs b/theseus/src/api/process.rs index ef455a19c..7673c1676 100644 --- a/theseus/src/api/process.rs +++ b/theseus/src/api/process.rs @@ -3,7 +3,7 @@ use std::path::{Path, PathBuf}; use uuid::Uuid; -use crate::state::MinecraftChild; +use crate::{state::MinecraftChild, util::io::IOError}; pub use crate::{ state::{ Hooks, JavaSettings, MemorySettings, Profile, Settings, WindowSize, @@ -121,7 +121,13 @@ pub async fn wait_for_by_uuid(uuid: &Uuid) -> crate::Result<()> { // Kill a running child process directly, and wait for it to be killed #[tracing::instrument(skip(running))] pub async fn kill(running: &mut MinecraftChild) -> crate::Result<()> { - running.current_child.write().await.kill().await?; + running + .current_child + .write() + .await + .kill() + .await + .map_err(IOError::from)?; wait_for(running).await } diff --git a/theseus/src/api/profile.rs b/theseus/src/api/profile.rs index e4de2b372..1657cf05e 100644 --- a/theseus/src/api/profile.rs +++ b/theseus/src/api/profile.rs @@ -9,6 +9,7 @@ use crate::pack::install_from::{ use crate::prelude::JavaVersion; use crate::state::ProjectMetadata; +use crate::util::io::{self, IOError}; use crate::{ auth::{self, refresh}, event::{emit::emit_profile, ProfilePayloadType}, @@ -27,11 +28,7 @@ use std::{ sync::Arc, }; use tokio::io::AsyncReadExt; -use tokio::{ - fs::{self, File}, - process::Command, - sync::RwLock, -}; +use tokio::{fs::File, process::Command, sync::RwLock}; /// Remove a profile #[tracing::instrument] @@ -110,8 +107,8 @@ pub async fn edit_icon( ) -> crate::Result<()> { let state = State::get().await?; - if let Some(icon) = icon_path { - let bytes = tokio::fs::read(icon).await?; + let res = if let Some(icon) = icon_path { + let bytes = io::read(icon).await?; let mut profiles = state.profiles.write().await; @@ -133,8 +130,6 @@ pub async fn edit_icon( ProfilePayloadType::Edited, ) .await?; - State::sync().await?; - Ok(()) } None => Err(crate::ErrorKind::UnmanagedProfileError( @@ -151,7 +146,9 @@ pub async fn edit_icon( State::sync().await?; Ok(()) - } + }; + State::sync().await?; + res } // Gets the optimal JRE key for the given profile, using Daedalus @@ -416,7 +413,7 @@ pub async fn add_project_from_path( project_type: Option, ) -> crate::Result { if let Some(profile) = get(profile_path, None).await? { - let file = fs::read(path).await?; + let file = io::read(path).await?; let file_name = path .file_name() .unwrap_or_default() @@ -525,7 +522,9 @@ pub async fn export_mrpack( let profile_base_path = &profile.path; - let mut file = File::create(export_path).await?; + let mut file = File::create(&export_path) + .await + .map_err(|e| IOError::with_path(e, &export_path))?; let mut writer = ZipFileWriter::new(&mut file); // Create mrpack json configuration file @@ -592,9 +591,13 @@ pub async fn export_mrpack( // File is not in the config file, add it to the .mrpack zip if path.is_file() { - let mut file = File::open(&path).await?; + let mut file = File::open(&path) + .await + .map_err(|e| IOError::with_path(e, &path))?; let mut data = Vec::new(); - file.read_to_end(&mut data).await?; + file.read_to_end(&mut data) + .await + .map_err(|e| IOError::with_path(e, &path))?; let builder = ZipEntryBuilder::new( format!("overrides/{relative_path}"), Compression::Deflate, @@ -639,13 +642,21 @@ pub async fn get_potential_override_folders( let mrpack_files = get_modrinth_pack_list(&mrpack); let mut path_list: Vec = Vec::new(); - let mut read_dir = fs::read_dir(&profile_path).await?; - while let Some(entry) = read_dir.next_entry().await? { + let mut read_dir = io::read_dir(&profile_path).await?; + while let Some(entry) = read_dir + .next_entry() + .await + .map_err(|e| IOError::with_path(e, &profile_path))? + { let path: PathBuf = entry.path(); if path.is_dir() { // Two layers of files/folders if its a folder - let mut read_dir = fs::read_dir(&path).await?; - while let Some(entry) = read_dir.next_entry().await? { + let mut read_dir = io::read_dir(&path).await?; + while let Some(entry) = read_dir + .next_entry() + .await + .map_err(|e| IOError::with_path(e, &profile_path))? + { let path: PathBuf = entry.path(); let name = path.strip_prefix(&profile_path)?.to_path_buf(); if !mrpack_files.contains(&name.to_string_lossy().to_string()) { @@ -712,9 +723,11 @@ pub async fn run_credentials( let result = Command::new(command) .args(&cmd.collect::>()) .current_dir(path) - .spawn()? + .spawn() + .map_err(|e| IOError::with_path(e, path))? .wait() - .await?; + .await + .map_err(IOError::from)?; if !result.success() { return Err(crate::ErrorKind::LauncherError(format!( @@ -925,8 +938,12 @@ pub async fn build_folder( path: &Path, path_list: &mut Vec, ) -> crate::Result<()> { - let mut read_dir = fs::read_dir(path).await?; - while let Some(entry) = read_dir.next_entry().await? { + let mut read_dir = io::read_dir(path).await?; + while let Some(entry) = read_dir + .next_entry() + .await + .map_err(|e| IOError::with_path(e, path))? + { let path = entry.path(); if path.is_dir() { build_folder(&path, path_list).await?; diff --git a/theseus/src/api/profile_create.rs b/theseus/src/api/profile_create.rs index 88a802b61..e03418ba5 100644 --- a/theseus/src/api/profile_create.rs +++ b/theseus/src/api/profile_create.rs @@ -1,5 +1,6 @@ //! Theseus profile management interface use crate::state::LinkedData; +use crate::util::io::{self, canonicalize}; use crate::{ event::{emit::emit_profile, ProfilePayloadType}, prelude::ModLoader, @@ -9,11 +10,9 @@ pub use crate::{ State, }; use daedalus::modded::LoaderVersion; -use dunce::canonicalize; use futures::prelude::*; use std::path::PathBuf; -use tokio::fs; use tokio_stream::wrappers::ReadDirStream; use tracing::{info, trace}; use uuid::Uuid; @@ -48,7 +47,7 @@ pub async fn profile_create( .into()); } - if ReadDirStream::new(fs::read_dir(&path).await?) + if ReadDirStream::new(io::read_dir(&path).await?) .next() .await .is_some() @@ -56,7 +55,7 @@ pub async fn profile_create( return Err(ProfileCreationError::NotEmptyFolder.into()); } } else { - fs::create_dir_all(&path).await?; + io::create_dir_all(&path).await?; } info!( @@ -80,7 +79,7 @@ pub async fn profile_create( Profile::new(uuid, name, game_version, path.clone()).await?; let result = async { if let Some(ref icon) = icon { - let bytes = tokio::fs::read(icon).await?; + let bytes = io::read(icon).await?; profile .set_icon( &state.directories.caches_dir(), diff --git a/theseus/src/error.rs b/theseus/src/error.rs index 16056524a..da1928dc8 100644 --- a/theseus/src/error.rs +++ b/theseus/src/error.rs @@ -1,5 +1,5 @@ //! Theseus error type -use crate::profile_create; +use crate::{profile_create, util}; use tracing_error::InstrumentError; #[derive(thiserror::Error, Debug)] @@ -29,7 +29,7 @@ pub enum ErrorKind { AuthTaskError(#[from] crate::state::AuthTaskError), #[error("I/O error: {0}")] - IOError(#[from] std::io::Error), + IOError(#[from] util::io::IOError), #[error("Error launching Minecraft: {0}")] LauncherError(String), diff --git a/theseus/src/launcher/args.rs b/theseus/src/launcher/args.rs index c953f7d0f..8cc2e8bff 100644 --- a/theseus/src/launcher/args.rs +++ b/theseus/src/launcher/args.rs @@ -3,7 +3,7 @@ use super::{auth::Credentials, parse_rule}; use crate::{ state::{MemorySettings, WindowSize}, - util::platform::classpath_separator, + util::{io::IOError, platform::classpath_separator}, }; use daedalus::{ get_path_from_artifact, @@ -393,7 +393,8 @@ pub async fn get_processor_main_class( path: String, ) -> crate::Result> { let main_class = tokio::task::spawn_blocking(move || { - let zipfile = std::fs::File::open(&path)?; + let zipfile = std::fs::File::open(&path) + .map_err(|e| IOError::with_path(e, &path))?; let mut archive = zip::ZipArchive::new(zipfile).map_err(|_| { crate::ErrorKind::LauncherError(format!( "Cannot read processor at {}", @@ -413,7 +414,7 @@ pub async fn get_processor_main_class( let reader = BufReader::new(file); for line in reader.lines() { - let mut line = line?; + let mut line = line.map_err(IOError::from)?; line.retain(|c| !c.is_whitespace()); if line.starts_with("Main-Class:") { diff --git a/theseus/src/launcher/download.rs b/theseus/src/launcher/download.rs index 67e32cfd5..5528c487c 100644 --- a/theseus/src/launcher/download.rs +++ b/theseus/src/launcher/download.rs @@ -6,7 +6,7 @@ use crate::{ LoadingBarId, }, state::State, - util::{fetch::*, platform::OsExt}, + util::{fetch::*, io, platform::OsExt}, }; use daedalus::{ self as d, @@ -17,7 +17,7 @@ use daedalus::{ modded::LoaderVersion, }; use futures::prelude::*; -use tokio::{fs, sync::OnceCell}; +use tokio::sync::OnceCell; #[tracing::instrument(skip(st, version))] pub async fn download_minecraft( @@ -71,7 +71,7 @@ pub async fn download_version_info( .join(format!("{version_id}.json")); let res = if path.exists() && !force.unwrap_or(false) { - fs::read(path) + io::read(path) .err_into::() .await .and_then(|ref it| Ok(serde_json::from_slice(it)?)) @@ -152,7 +152,7 @@ pub async fn download_assets_index( .join(format!("{}.json", &version.asset_index.id)); let res = if path.exists() { - fs::read(path) + io::read(path) .err_into::() .await .and_then(|ref it| Ok(serde_json::from_slice(it)?)) @@ -245,8 +245,8 @@ pub async fn download_libraries( tracing::debug!("Loading libraries"); tokio::try_join! { - fs::create_dir_all(st.directories.libraries_dir()), - fs::create_dir_all(st.directories.version_natives_dir(version)) + io::create_dir_all(st.directories.libraries_dir()), + io::create_dir_all(st.directories.version_natives_dir(version)) }?; let num_files = libraries.len(); loading_try_for_each_concurrent( diff --git a/theseus/src/launcher/mod.rs b/theseus/src/launcher/mod.rs index eacd54c5d..b5e86637c 100644 --- a/theseus/src/launcher/mod.rs +++ b/theseus/src/launcher/mod.rs @@ -1,9 +1,10 @@ //! Logic for launching Minecraft use crate::event::emit::{emit_loading, init_or_edit_loading}; use crate::event::{LoadingBarId, LoadingBarType}; -use crate::jre::{JAVA_17_KEY, JAVA_18PLUS_KEY, JAVA_8_KEY}; +use crate::jre::{self, JAVA_17_KEY, JAVA_18PLUS_KEY, JAVA_8_KEY}; use crate::prelude::JavaVersion; use crate::state::ProfileInstallStage; +use crate::util::io; use crate::EventState; use crate::{ process, @@ -13,10 +14,8 @@ use crate::{ use chrono::Utc; use daedalus as d; use daedalus::minecraft::VersionInfo; -use dunce::canonicalize; use st::Profile; use std::collections::HashMap; -use std::fs; use std::{process::Stdio, sync::Arc}; use tokio::process::Command; use uuid::Uuid; @@ -125,7 +124,7 @@ pub async fn install_minecraft( State::sync().await?; let state = State::get().await?; - let instance_path = &canonicalize(&profile.path)?; + let instance_path = &io::canonicalize(&profile.path)?; let metadata = state.metadata.read().await; let version = metadata @@ -160,7 +159,7 @@ pub async fn install_minecraft( .await? .ok_or_else(|| { crate::ErrorKind::OtherError( - "No available java installation".to_string(), + "Missing correct java installation".to_string(), ) })?; @@ -282,7 +281,7 @@ pub async fn install_minecraft( Ok(()) } -#[tracing::instrument] +#[tracing::instrument(skip_all)] #[theseus_macros::debug_pin] #[allow(clippy::too_many_arguments)] pub async fn launch_minecraft( @@ -310,7 +309,7 @@ pub async fn launch_minecraft( let state = State::get().await?; let metadata = state.metadata.read().await; - let instance_path = &canonicalize(&profile.path)?; + let instance_path = &io::canonicalize(&profile.path)?; let version = metadata .minecraft @@ -343,10 +342,20 @@ pub async fn launch_minecraft( .await? .ok_or_else(|| { crate::ErrorKind::LauncherError( - "No available java installation".to_string(), + "Missing correct java installation".to_string(), ) })?; + // Test jre version + let java_version = jre::check_jre(java_version.path.clone().into()) + .await? + .ok_or_else(|| { + crate::ErrorKind::LauncherError(format!( + "Java path invalid or non-functional: {}", + java_version.path + )) + })?; + let client_path = state .directories .version_dir(&version_jar) @@ -433,7 +442,7 @@ pub async fn launch_minecraft( .profile_logs_dir(profile.uuid) .join(&datetime_string) }; - fs::create_dir_all(&logs_dir)?; + io::create_dir_all(&logs_dir).await?; let stdout_log_path = logs_dir.join("stdout.log"); diff --git a/theseus/src/state/children.rs b/theseus/src/state/children.rs index bbb7163d4..2ed0c511b 100644 --- a/theseus/src/state/children.rs +++ b/theseus/src/state/children.rs @@ -12,6 +12,7 @@ use tracing::error; use crate::event::emit::emit_process; use crate::event::ProcessPayloadType; +use crate::util::io::IOError; use crate::EventState; use tokio::task::JoinHandle; use uuid::Uuid; @@ -39,7 +40,15 @@ impl Children { // The threads for stdout and stderr are spawned here // Unlike a Hashmap's 'insert', this directly returns the reference to the MinecraftChild rather than any previously stored MinecraftChild that may exist - #[tracing::instrument(skip(self))] + #[tracing::instrument(skip( + self, + uuid, + log_path, + mc_command, + post_command, + censor_strings + ))] + #[tracing::instrument(level = "trace", skip(self))] #[theseus_macros::debug_pin] pub async fn insert_process( &mut self, @@ -51,7 +60,7 @@ impl Children { censor_strings: HashMap, ) -> crate::Result>> { // Takes the first element of the commands vector and spawns it - let mut child = mc_command.spawn()?; + let mut child = mc_command.spawn().map_err(IOError::from)?; // Create std watcher threads for stdout and stderr let shared_output = @@ -125,7 +134,12 @@ impl Children { // Wait on current Minecraft Child let mut mc_exit_status; loop { - if let Some(t) = current_child.write().await.try_wait()? { + if let Some(t) = current_child + .write() + .await + .try_wait() + .map_err(IOError::from)? + { mc_exit_status = t; break; } @@ -156,7 +170,7 @@ impl Children { if let Some(mut m_command) = post_command { { let mut current_child = current_child.write().await; - let new_child = m_command.spawn()?; + let new_child = m_command.spawn().map_err(IOError::from)?; current_pid = new_child.id().ok_or_else(|| { crate::ErrorKind::LauncherError( "Process immediately failed, could not get PID" @@ -174,7 +188,12 @@ impl Children { .await?; loop { - if let Some(t) = current_child.write().await.try_wait()? { + if let Some(t) = current_child + .write() + .await + .try_wait() + .map_err(IOError::from)? + { mc_exit_status = t; break; } @@ -210,7 +229,12 @@ impl Children { ) -> crate::Result> { if let Some(child) = self.get(uuid) { let child = child.write().await; - let status = child.current_child.write().await.try_wait()?; + let status = child + .current_child + .write() + .await + .try_wait() + .map_err(IOError::from)?; Ok(status) } else { Ok(None) @@ -224,7 +248,14 @@ impl Children { if let Some(child) = self.get(&key) { let child = child.clone(); let child = child.write().await; - if child.current_child.write().await.try_wait()?.is_none() { + if child + .current_child + .write() + .await + .try_wait() + .map_err(IOError::from)? + .is_none() + { keys.push(key); } } @@ -258,7 +289,14 @@ impl Children { if let Some(child) = self.get(&key) { let child = child.clone(); let child = child.write().await; - if child.current_child.write().await.try_wait()?.is_none() { + if child + .current_child + .write() + .await + .try_wait() + .map_err(IOError::from)? + .is_none() + { profiles.push(child.profile_path.clone()); } } @@ -274,7 +312,14 @@ impl Children { if let Some(child) = self.get(&key) { let child = child.clone(); let child = child.write().await; - if child.current_child.write().await.try_wait()?.is_none() { + if child + .current_child + .write() + .await + .try_wait() + .map_err(IOError::from)? + .is_none() + { if let Some(prof) = crate::api::profile::get( &child.profile_path.clone(), None, @@ -312,7 +357,11 @@ impl SharedOutput { ) -> crate::Result { Ok(SharedOutput { output: Arc::new(RwLock::new(String::new())), - log_file: Arc::new(RwLock::new(File::create(log_file_path).await?)), + log_file: Arc::new(RwLock::new( + File::create(log_file_path) + .await + .map_err(|e| IOError::with_path(e, log_file_path))?, + )), censor_strings, }) } @@ -330,7 +379,12 @@ impl SharedOutput { let mut buf_reader = BufReader::new(child_stdout); let mut line = String::new(); - while buf_reader.read_line(&mut line).await? > 0 { + while buf_reader + .read_line(&mut line) + .await + .map_err(IOError::from)? + > 0 + { let val_line = self.censor_log(line.clone()); { @@ -339,7 +393,10 @@ impl SharedOutput { } { let mut log_file = self.log_file.write().await; - log_file.write_all(val_line.as_bytes()).await?; + log_file + .write_all(val_line.as_bytes()) + .await + .map_err(IOError::from)?; } line.clear(); @@ -354,7 +411,12 @@ impl SharedOutput { let mut buf_reader = BufReader::new(child_stderr); let mut line = String::new(); - while buf_reader.read_line(&mut line).await? > 0 { + while buf_reader + .read_line(&mut line) + .await + .map_err(IOError::from)? + > 0 + { let val_line = self.censor_log(line.clone()); { @@ -363,7 +425,10 @@ impl SharedOutput { } { let mut log_file = self.log_file.write().await; - log_file.write_all(val_line.as_bytes()).await?; + log_file + .write_all(val_line.as_bytes()) + .await + .map_err(IOError::from)?; } line.clear(); diff --git a/theseus/src/state/profiles.rs b/theseus/src/state/profiles.rs index 97001fc8f..5fb629811 100644 --- a/theseus/src/state/profiles.rs +++ b/theseus/src/state/profiles.rs @@ -9,11 +9,11 @@ use crate::state::{ModrinthVersion, ProjectMetadata, ProjectType}; use crate::util::fetch::{ fetch, fetch_json, write, write_cached_icon, IoSemaphore, }; +use crate::util::io::{self, IOError}; use crate::State; use chrono::{DateTime, Utc}; use daedalus::get_hash; use daedalus::modded::LoaderVersion; -use dunce::canonicalize; use futures::prelude::*; use notify::{RecommendedWatcher, RecursiveMode}; use notify_debouncer_mini::Debouncer; @@ -24,7 +24,6 @@ use std::{ collections::HashMap, path::{Path, PathBuf}, }; -use tokio::fs; use uuid::Uuid; const PROFILE_JSON_PATH: &str = "profile.json"; @@ -161,7 +160,7 @@ impl Profile { Ok(Self { uuid, install_stage: ProfileInstallStage::NotInstalled, - path: canonicalize(path)?, + path: io::canonicalize(path)?, metadata: ProfileMetadata { name, icon: None, @@ -274,8 +273,11 @@ impl Profile { let mut read_paths = |path: &str| { let new_path = self.path.join(path); if new_path.exists() { - for path in std::fs::read_dir(self.path.join(path))? { - let path = path?.path(); + let path = self.path.join(path); + for path in std::fs::read_dir(&path) + .map_err(|e| IOError::with_path(e, &path))? + { + let path = path.map_err(IOError::from)?.path(); if path.is_file() { files.push(path); } @@ -305,7 +307,7 @@ impl Profile { ) -> crate::Result<()> { let path = profile_path.join(path); - fs::create_dir_all(&path).await?; + io::create_dir_all(&path).await?; watcher .watcher() @@ -476,7 +478,7 @@ impl Profile { project.disabled = true; } - fs::rename(path, &new_path).await?; + io::rename(&path, &new_path).await?; let mut profiles = state.profiles.write().await; if let Some(profile) = profiles.0.get_mut(&self.path) { @@ -501,7 +503,7 @@ impl Profile { ) -> crate::Result<()> { let state = State::get().await?; if self.projects.contains_key(path) { - fs::remove_file(path).await?; + io::remove_file(path).await?; if !dont_remove_arr.unwrap_or(false) { let mut profiles = state.profiles.write().await; @@ -530,9 +532,11 @@ impl Profiles { file_watcher: &mut Debouncer, ) -> crate::Result { let mut profiles = HashMap::new(); - fs::create_dir_all(dirs.profiles_dir()).await?; - let mut entries = fs::read_dir(dirs.profiles_dir()).await?; - while let Some(entry) = entries.next_entry().await? { + io::create_dir_all(&dirs.profiles_dir()).await?; + let mut entries = io::read_dir(&dirs.profiles_dir()).await?; + while let Some(entry) = + entries.next_entry().await.map_err(IOError::from)? + { let path = entry.path(); if path.is_dir() { let prof = match Self::read_profile_from_dir(&path).await { @@ -545,7 +549,7 @@ impl Profiles { } }; if let Some(profile) = prof { - let path = canonicalize(path)?; + let path = io::canonicalize(path)?; Profile::watch_fs(&path, file_watcher).await?; profiles.insert(path, profile); } @@ -629,7 +633,7 @@ impl Profiles { Profile::watch_fs(&profile.path, &mut file_watcher).await?; self.0.insert( - canonicalize(&profile.path)? + io::canonicalize(&profile.path)? .to_str() .ok_or( crate::ErrorKind::UTFError(profile.path.clone()).as_error(), @@ -645,12 +649,13 @@ impl Profiles { &mut self, path: &Path, ) -> crate::Result> { - let path = - PathBuf::from(&canonicalize(path)?.to_string_lossy().to_string()); + let path = PathBuf::from( + &io::canonicalize(path)?.to_string_lossy().to_string(), + ); let profile = self.0.remove(&path); if path.exists() { - fs::remove_dir_all(path).await?; + io::remove_dir_all(&path).await?; } Ok(profile) @@ -666,7 +671,7 @@ impl Profiles { let json_path = Path::new(&path.to_string_lossy().to_string()) .join(PROFILE_JSON_PATH); - fs::write(json_path, json).await?; + io::write(&json_path, &json).await?; Ok::<_, crate::Error>(()) }) .await?; @@ -675,7 +680,7 @@ impl Profiles { } async fn read_profile_from_dir(path: &Path) -> crate::Result { - let json = fs::read(path.join(PROFILE_JSON_PATH)).await?; + let json = io::read(&path.join(PROFILE_JSON_PATH)).await?; let mut profile = serde_json::from_slice::(&json)?; profile.path = PathBuf::from(path); Ok(profile) diff --git a/theseus/src/state/projects.rs b/theseus/src/state/projects.rs index ba8bdc14e..2a81288d4 100644 --- a/theseus/src/state/projects.rs +++ b/theseus/src/state/projects.rs @@ -5,6 +5,7 @@ use crate::state::Profile; use crate::util::fetch::{ fetch_json, write_cached_icon, FetchSemaphore, IoSemaphore, }; +use crate::util::io::IOError; use async_zip::tokio::read::fs::ZipFileReader; use chrono::{DateTime, Utc}; use reqwest::Method; @@ -252,7 +253,7 @@ async fn read_icon_from_file( Ok(None) } -#[tracing::instrument(skip(profile, io_semaphore, fetch_semaphore))] +#[tracing::instrument(skip(paths, profile, io_semaphore, fetch_semaphore))] #[theseus_macros::debug_pin] pub async fn infer_data_from_files( profile: Profile, @@ -265,10 +266,12 @@ pub async fn infer_data_from_files( // TODO: Make this concurrent and use progressive hashing to avoid loading each JAR in memory for path in paths { - let mut file = tokio::fs::File::open(path.clone()).await?; + let mut file = tokio::fs::File::open(path.clone()) + .await + .map_err(|e| IOError::with_path(e, &path))?; let mut buffer = Vec::new(); - file.read_to_end(&mut buffer).await?; + file.read_to_end(&mut buffer).await.map_err(IOError::from)?; let hash = format!("{:x}", sha2::Sha512::digest(&buffer)); file_path_hashes.insert(hash, path.clone()); diff --git a/theseus/src/util/fetch.rs b/theseus/src/util/fetch.rs index b60fe1f1e..ef17fc201 100644 --- a/theseus/src/util/fetch.rs +++ b/theseus/src/util/fetch.rs @@ -9,10 +9,9 @@ use std::ffi::OsStr; use std::path::{Path, PathBuf}; use std::time; use tokio::sync::{RwLock, Semaphore}; -use tokio::{ - fs::{self, File}, - io::AsyncWriteExt, -}; +use tokio::{fs::File, io::AsyncWriteExt}; + +use super::io::{self, IOError}; #[derive(Debug)] pub struct IoSemaphore(pub RwLock); @@ -193,7 +192,7 @@ where let io_semaphore = semaphore.0.read().await; let _permit = io_semaphore.acquire().await?; - let json = fs::read(path).await?; + let json = io::read(path).await?; let json = serde_json::from_slice::(&json)?; Ok(json) @@ -209,11 +208,15 @@ pub async fn write<'a>( let _permit = io_semaphore.acquire().await?; if let Some(parent) = path.parent() { - fs::create_dir_all(parent).await?; + io::create_dir_all(parent).await?; } - let mut file = File::create(path).await?; - file.write_all(bytes).await?; + let mut file = File::create(path) + .await + .map_err(|e| IOError::with_path(e, path))?; + file.write_all(bytes) + .await + .map_err(|e| IOError::with_path(e, path))?; tracing::trace!("Done writing file {}", path.display()); Ok(()) } @@ -235,7 +238,7 @@ pub async fn write_cached_icon( write(&path, &bytes, semaphore).await?; - let path = dunce::canonicalize(path)?; + let path = io::canonicalize(path)?; Ok(path) } diff --git a/theseus/src/util/io.rs b/theseus/src/util/io.rs new file mode 100644 index 000000000..11162e94a --- /dev/null +++ b/theseus/src/util/io.rs @@ -0,0 +1,149 @@ +// IO error +// A wrapper around the tokio IO functions that adds the path to the error message, instead of the uninformative std::io::Error. + +#[derive(Debug, thiserror::Error)] +pub enum IOError { + #[error("{source}, path: {path}")] + IOPathError { + #[source] + source: std::io::Error, + path: String, + }, + #[error(transparent)] + IOError(#[from] std::io::Error), +} + +impl IOError { + pub fn from(source: std::io::Error) -> Self { + Self::IOError(source) + } + pub fn with_path( + source: std::io::Error, + path: impl AsRef, + ) -> Self { + let path = path.as_ref(); + + Self::IOPathError { + source, + path: path.to_string_lossy().to_string(), + } + } +} + +// dunce canonicalize +pub fn canonicalize( + path: impl AsRef, +) -> Result { + let path = path.as_ref(); + dunce::canonicalize(path).map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// read_dir +pub async fn read_dir( + path: impl AsRef, +) -> Result { + let path = path.as_ref(); + tokio::fs::read_dir(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// create_dir_all +pub async fn create_dir_all( + path: impl AsRef, +) -> Result<(), IOError> { + let path = path.as_ref(); + tokio::fs::create_dir_all(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// remove_dir_all +pub async fn remove_dir_all( + path: impl AsRef, +) -> Result<(), IOError> { + let path = path.as_ref(); + tokio::fs::remove_dir_all(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// read_to_string +pub async fn read_to_string( + path: impl AsRef, +) -> Result { + let path = path.as_ref(); + tokio::fs::read_to_string(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// read +pub async fn read( + path: impl AsRef, +) -> Result, IOError> { + let path = path.as_ref(); + tokio::fs::read(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// write +pub async fn write( + path: impl AsRef, + data: impl AsRef<[u8]>, +) -> Result<(), IOError> { + let path = path.as_ref(); + tokio::fs::write(path, data) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} + +// rename +pub async fn rename( + from: impl AsRef, + to: impl AsRef, +) -> Result<(), IOError> { + let from = from.as_ref(); + let to = to.as_ref(); + tokio::fs::rename(from, to) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: from.to_string_lossy().to_string(), + }) +} + +// remove file +pub async fn remove_file( + path: impl AsRef, +) -> Result<(), IOError> { + let path = path.as_ref(); + tokio::fs::remove_file(path) + .await + .map_err(|e| IOError::IOPathError { + source: e, + path: path.to_string_lossy().to_string(), + }) +} diff --git a/theseus/src/util/jre.rs b/theseus/src/util/jre.rs index 05e57d86c..986e47803 100644 --- a/theseus/src/util/jre.rs +++ b/theseus/src/util/jre.rs @@ -1,4 +1,4 @@ -use dunce::canonicalize; +use super::io; use futures::prelude::*; use serde::{Deserialize, Serialize}; use std::env; @@ -270,7 +270,7 @@ pub async fn check_java_at_filepaths( pub async fn check_java_at_filepath(path: &Path) -> Option { // Attempt to canonicalize the potential java filepath // If it fails, this path does not exist and None is returned (no Java here) - let Ok(path) = canonicalize(path) else { return None }; + let Ok(path) = io::canonicalize(path) else { return None }; // Checks for existence of Java at this filepath // Adds JAVA_BIN to the end of the path if it is not already there diff --git a/theseus/src/util/mod.rs b/theseus/src/util/mod.rs index a3a4c7937..813ec149c 100644 --- a/theseus/src/util/mod.rs +++ b/theseus/src/util/mod.rs @@ -1,5 +1,6 @@ //! Theseus utility functions pub mod fetch; +pub mod io; pub mod jre; pub mod platform; diff --git a/theseus_gui/src/App.vue b/theseus_gui/src/App.vue index 298206330..5c0ded2ff 100644 --- a/theseus_gui/src/App.vue +++ b/theseus_gui/src/App.vue @@ -1,6 +1,6 @@