diff --git a/Cargo.lock b/Cargo.lock index 7974fdd..25fb1fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,24 +4,24 @@ version = 4 [[package]] name = "addr2line" -version = "0.20.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -45,51 +45,52 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] @@ -125,23 +126,23 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -173,9 +174,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "block-buffer" @@ -200,15 +201,15 @@ checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bzip2" @@ -231,11 +232,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "525046617d8376e3db1deffb079e91cef90a89fc3ca5c185bbf8c9ecdd15cd5c" dependencies = [ "jobserver", + "libc", + "shlex", ] [[package]] @@ -246,9 +249,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.35" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", @@ -256,7 +259,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-link", ] [[package]] @@ -271,32 +274,31 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.11" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.11" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", "clap_lex", - "strsim", + "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.3.2" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", @@ -306,38 +308,37 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "colored" -version = "2.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ - "is-terminal", "lazy_static", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "console" -version = "0.15.7" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "unicode-width", - "windows-sys 0.45.0", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", ] [[package]] @@ -358,24 +359,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.0.1" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" dependencies = [ "crc-catalog", ] @@ -455,7 +456,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.10.0", "syn", ] @@ -476,6 +477,16 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" +[[package]] +name = "deranged" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derive_arbitrary" version = "1.4.1" @@ -507,15 +518,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -528,17 +530,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "either" version = "1.9.0" @@ -547,9 +538,9 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -562,25 +553,25 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "figment" @@ -591,7 +582,7 @@ dependencies = [ "atomic", "pear", "serde", - "toml 0.8.8", + "toml 0.8.20", "uncased", "version_check", ] @@ -604,9 +595,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", "miniz_oxide", @@ -749,14 +740,28 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.27.3" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "h2" @@ -785,15 +790,15 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -816,6 +821,15 @@ dependencies = [ "digest", ] +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "http" version = "0.2.9" @@ -889,14 +903,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -939,27 +954,27 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.15.2", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "tokio", "unicode-segmentation", - "unicode-width", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -970,22 +985,13 @@ checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "ipnet" version = "2.8.0" @@ -999,7 +1005,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi", - "rustix", + "rustix 0.38.34", "windows-sys 0.48.0", ] @@ -1009,27 +1015,35 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "616cde7c720bb2bb5824a224687d8f77bfd38922027f01d825cd7453be5099fb" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" -version = "1.0.8" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.2", "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1041,7 +1055,7 @@ checksum = "7e4c8354918309196302015ac9cae43362f1a13d0d5c5539a33b4c2fd2cd6d25" dependencies = [ "pest", "pest_derive", - "thiserror 1.0.57", + "thiserror 1.0.69", ] [[package]] @@ -1052,20 +1066,20 @@ checksum = "0447866c47c00f8bd1949618e8f63017cf93e985b4684dc28d784527e2882390" dependencies = [ "keyvalues-parser", "serde", - "thiserror 1.0.57", + "thiserror 1.0.69", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libredox" @@ -1073,7 +1087,7 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "libc", "redox_syscall", ] @@ -1084,6 +1098,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "lockfree-object-pool" version = "0.1.6" @@ -1092,9 +1112,9 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.21" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lzma-rs" @@ -1106,6 +1126,17 @@ dependencies = [ "crc", ] +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "md-5" version = "0.10.6" @@ -1148,8 +1179,8 @@ dependencies = [ "supports-unicode", "terminal_size", "textwrap", - "thiserror 1.0.57", - "unicode-width", + "thiserror 1.0.69", + "unicode-width 0.1.14", ] [[package]] @@ -1171,22 +1202,22 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "ff70ce3e48ae43fa075863cef62e8b43b71a4f2382229920e0df362592919430" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.9" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi", - "windows-sys 0.48.0", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", ] [[package]] @@ -1217,22 +1248,18 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.17" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" -dependencies = [ - "autocfg", -] +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] -name = "num_cpus" -version = "1.16.0" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "hermit-abi", - "libc", + "autocfg", ] [[package]] @@ -1243,18 +1270,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.31.1" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl" @@ -1353,20 +1380,20 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.7.5" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" dependencies = [ "memchr", - "thiserror 1.0.57", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.5" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +checksum = "d725d9cfd79e87dccc9341a2ef39d1b6f6353d68c4b33c177febbe1a402c97c5" dependencies = [ "pest", "pest_generator", @@ -1374,9 +1401,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.5" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +checksum = "db7d01726be8ab66ab32f9df467ae8b1148906685bbe75c82d1e65d7f5b3f841" dependencies = [ "pest", "pest_meta", @@ -1387,9 +1414,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.5" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +checksum = "7f9f832470494906d1fca5329f8ab5791cc60beb230c74815dff541cbd2b5ca0" dependencies = [ "once_cell", "pest", @@ -1403,16 +1430,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.0", + "indexmap 2.8.0", "serde", "serde_derive", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -1422,30 +1449,27 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.3.3" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] -name = "ppv-lite86" -version = "0.2.20" +name = "powerfmt" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" -dependencies = [ - "zerocopy", -] +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] @@ -1465,42 +1489,18 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] [[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" +name = "r-efi" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" [[package]] name = "rayon" @@ -1537,9 +1537,9 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom", + "getrandom 0.2.10", "libredox", - "thiserror 1.0.57", + "thiserror 1.0.69", ] [[package]] @@ -1583,9 +1583,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -1593,13 +1593,32 @@ version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustix" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + [[package]] name = "ryu" version = "1.0.14" @@ -1655,18 +1674,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.196" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -1686,9 +1705,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -1735,9 +1754,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -1746,15 +1765,21 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", "digest", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.1" @@ -1797,26 +1822,26 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "steamlocate" -version = "2.0.0-beta.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b6a4810c4e7fecb0123a9a8ba99b335c17d92e636c265ef99108ee4734c812" +checksum = "a13160bc6ea5cd80cde195ad4a4c629701db2bf397b62c139aa9e739016d2499" dependencies = [ "crc", - "dirs", + "home", "keyvalues-parser", "keyvalues-serde", "serde", - "winreg 0.51.0", + "winreg 0.55.0", ] [[package]] @@ -1825,11 +1850,17 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "supports-color" @@ -1861,9 +1892,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -1911,7 +1942,7 @@ dependencies = [ "steamlocate", "sysinfo", "tempfile", - "thiserror 1.0.57", + "thiserror 1.0.69", "tokio", "tokio-util", "toml 0.7.8", @@ -1923,14 +1954,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", - "rustix", - "windows-sys 0.52.0", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.5", + "windows-sys 0.59.0", ] [[package]] @@ -1951,32 +1983,32 @@ checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.14", ] [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.57", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", @@ -1985,9 +2017,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -1996,11 +2028,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.22" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ + "deranged", "itoa", + "num-conv", + "powerfmt", "serde", "time-core", "time-macros", @@ -2008,16 +2043,17 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ + "num-conv", "time-core", ] @@ -2038,27 +2074,26 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.9", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", @@ -2103,21 +2138,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit 0.22.24", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -2128,24 +2163,24 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.5.19", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.8.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.4", ] [[package]] @@ -2182,15 +2217,15 @@ checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.16.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uncased" @@ -2209,9 +2244,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.10" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-linebreak" @@ -2230,15 +2265,21 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "url" @@ -2253,9 +2294,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" @@ -2265,15 +2306,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2294,25 +2335,35 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn", @@ -2333,9 +2384,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2343,9 +2394,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -2356,9 +2407,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -2383,11 +2437,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wildmatch" -version = "2.1.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee583bdc5ff1cf9db20e9db5bb3ff4c3089a8f6b8b31aff265c9aba85812db86" +checksum = "68ce1ab1f8c62655ebe1350f589c61e505cf94d385bc6a12899442d9081e71fd" [[package]] name = "winapi" @@ -2407,11 +2471,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2422,20 +2486,61 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.50.0" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af6041b3f84485c21b57acdc0fee4f4f0c93f426053dc05fa5d6fc262537bbff" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-targets 0.48.1", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-implement" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ - "windows-targets 0.42.2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", ] [[package]] @@ -2444,7 +2549,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -2453,185 +2558,153 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_msvc" -version = "0.42.2" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.4" +name = "winnow" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +dependencies = [ + "memchr", +] [[package]] name = "winnow" -version = "0.5.19" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" dependencies = [ "memchr", ] @@ -2657,40 +2730,37 @@ dependencies = [ [[package]] name = "winreg" -version = "0.51.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "937f3df7948156640f46aacef17a70db0de5917bda9c92b0f751f3a955b588fc" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] -name = "yansi" -version = "1.0.0-rc.1" +name = "wit-bindgen-rt" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] [[package]] -name = "zerocopy" -version = "0.7.35" +name = "xz2" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" dependencies = [ - "byteorder", - "zerocopy-derive", + "lzma-sys", ] [[package]] -name = "zerocopy-derive" -version = "0.7.35" +name = "yansi" +version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] +checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" [[package]] name = "zeroize" @@ -2714,9 +2784,9 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.3" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b280484c454e74e5fff658bbf7df8fdbe7a07c6b2de4a53def232c15ef138f3a" +checksum = "1dcb24d0152526ae49b9b96c1dcf71850ca1e0b882e4e28ed898a93c41334744" dependencies = [ "aes", "arbitrary", @@ -2725,17 +2795,16 @@ dependencies = [ "crc32fast", "crossbeam-utils", "deflate64", - "displaydoc", "flate2", + "getrandom 0.3.2", "hmac", - "indexmap 2.0.0", + "indexmap 2.8.0", "lzma-rs", "memchr", "pbkdf2", - "rand", "sha1", - "thiserror 2.0.11", "time", + "xz2", "zeroize", "zopfli", "zstd", @@ -2775,9 +2844,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.14+zstd.1.5.7" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index cc041e6..1047bf2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,8 @@ version = "0.3.0" edition = "2021" [dependencies] -once_cell = "1.17" -wildmatch = "2.1" +once_cell = "1.21" +wildmatch = "2.4" reqwest = { version = "0.11", features = ["json", "stream"] } petgraph = { version = "0.6", features = ["serde-1"] } @@ -13,13 +13,13 @@ petgraph = { version = "0.6", features = ["serde-1"] } # errors, ux, other user-facing communication thiserror = "1.0" miette = { version = "5.10", features = ["fancy"] } -colored = "2.0" -indicatif = { version = "0.17.8", features = ["improved_unicode", "tokio"] } +colored = "2.2" +indicatif = { version = "0.17.11", features = ["improved_unicode", "tokio"] } # async runtime and helpers futures = "0.3" futures-util = "0.3" -tokio = { version = "1.34", features = [ +tokio = { version = "1.44", features = [ "macros", "process", "rt-multi-thread", @@ -28,27 +28,27 @@ tokio-util = { version = "0.7", features = ["io"] } async-compression = { version = "0.4", features = ["futures-io", "gzip"] } # parsers, serializations, and other data processing -clap = { version = "4.2", features = ["derive", "color"] } +clap = { version = "4.5", features = ["derive", "color"] } figment = { version = "0.10", features = ["env", "toml"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_with = "2.3" -toml = "0.7.3" +toml = "0.7.8" md-5 = "0.10" base64 = "0.21" # files, directories, and other fs operations -walkdir = "2.3" -zip = "2.2.3" +walkdir = "2.5" +zip = "2.6.1" directories = "5.0" -steamlocate = "2.0.0-beta.2" +steamlocate = "2.0.1" sysinfo = "0.29" -chrono = { version = "0.4.35", features = ["serde"] } -log = "0.4.21" +chrono = { version = "0.4.40", features = ["serde"] } +log = "0.4.27" [target.'cfg(windows)'.dependencies] winreg = "0.50" [dev-dependencies] -tempfile = "3.10" +tempfile = "3.19" diff --git a/src/cli.rs b/src/cli.rs index 70fe72a..96bad05 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -76,7 +76,7 @@ pub enum ExternSubcommand { /// Use the `list` command to query the list of imported and supported games. #[clap(long)] game_id: String, - } + }, } #[derive(Subcommand, Debug)] diff --git a/src/error.rs b/src/error.rs index 9e31022..0415d59 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,11 +1,10 @@ use std::path::{Path, PathBuf}; -use crate::server::ServerError; -use crate::ts::error::ApiError; - use crate::game::error::GameError; use crate::package::error::PackageError; use crate::project::error::ProjectError; +use crate::server::ServerError; +use crate::ts::error::ApiError; #[derive(Debug, thiserror::Error)] #[repr(u32)] @@ -82,7 +81,10 @@ impl From for Error { impl From for Error { fn from(value: reqwest::Error) -> Self { - Self::Api(ApiError::BadRequest { source: value, response_body: None }) + Self::Api(ApiError::BadRequest { + source: value, + response_body: None, + }) } } diff --git a/src/game/error.rs b/src/game/error.rs index 51707db..bebd711 100644 --- a/src/game/error.rs +++ b/src/game/error.rs @@ -13,7 +13,10 @@ pub enum GameError { NotFound(String, String), #[error("Could not find any of '{possible_names:?}' in base directory: '{base_path}'.")] - ExeNotFound { possible_names: Vec, base_path: PathBuf}, + ExeNotFound { + possible_names: Vec, + base_path: PathBuf, + }, #[error("The Steam library could not be automatically found.")] SteamDirNotFound, diff --git a/src/game/import/ea.rs b/src/game/import/ea.rs index 8282d2b..a106220 100644 --- a/src/game/import/ea.rs +++ b/src/game/import/ea.rs @@ -35,11 +35,10 @@ impl GameImporter for EaImporter { .custom_exe .clone() .or_else(|| super::find_game_exe(&r2mm.exe_names, &game_dir)) - .ok_or_else(|| { - GameError::ExeNotFound { - possible_names: r2mm.exe_names.clone(), - base_path: game_dir.clone(), - }})?; + .ok_or_else(|| GameError::ExeNotFound { + possible_names: r2mm.exe_names.clone(), + base_path: game_dir.clone(), + })?; let dist = ActiveDistribution { dist: GameDefPlatform::Origin { identifier: self.ident.to_string(), diff --git a/src/game/import/egs.rs b/src/game/import/egs.rs index fd2c2a7..cd0be24 100644 --- a/src/game/import/egs.rs +++ b/src/game/import/egs.rs @@ -4,7 +4,7 @@ use std::path::PathBuf; use serde::{Deserialize, Serialize}; use super::{GameImporter, ImportBase}; -use crate::error::{IoError, Error}; +use crate::error::{Error, IoError}; use crate::game::error::GameError; use crate::game::registry::{ActiveDistribution, GameData}; use crate::ts::v1::models::ecosystem::GameDefPlatform; @@ -81,11 +81,10 @@ impl GameImporter for EgsImporter { .custom_exe .clone() .or_else(|| super::find_game_exe(&r2mm.exe_names, &game_dir)) - .ok_or_else(|| { - GameError::ExeNotFound { - possible_names: r2mm.exe_names.clone(), - base_path: game_dir.clone(), - }})?; + .ok_or_else(|| GameError::ExeNotFound { + possible_names: r2mm.exe_names.clone(), + base_path: game_dir.clone(), + })?; let dist = ActiveDistribution { dist: GameDefPlatform::Other, game_dir: game_dir.to_path_buf(), diff --git a/src/game/import/gamepass.rs b/src/game/import/gamepass.rs index 04cfb53..b27015b 100644 --- a/src/game/import/gamepass.rs +++ b/src/game/import/gamepass.rs @@ -49,11 +49,10 @@ impl GameImporter for GamepassImporter { .custom_exe .clone() .or_else(|| super::find_game_exe(&r2mm.exe_names, &game_dir)) - .ok_or_else(|| { - GameError::ExeNotFound { - possible_names: r2mm.exe_names.clone(), - base_path: game_dir.clone(), - }})?; + .ok_or_else(|| GameError::ExeNotFound { + possible_names: r2mm.exe_names.clone(), + base_path: game_dir.clone(), + })?; let dist = ActiveDistribution { dist: GameDefPlatform::GamePass { identifier: self.ident.to_string(), diff --git a/src/game/import/mod.rs b/src/game/import/mod.rs index f8c97f4..a5dcf73 100644 --- a/src/game/import/mod.rs +++ b/src/game/import/mod.rs @@ -14,7 +14,7 @@ use crate::game::import::ea::EaImporter; use crate::game::import::egs::EgsImporter; use crate::game::import::gamepass::GamepassImporter; use crate::game::import::steam::SteamImporter; -use crate::ts::v1::models::ecosystem::{ GameDef, GameDefPlatform }; +use crate::ts::v1::models::ecosystem::{GameDef, GameDefPlatform}; pub trait GameImporter { fn construct(self: Box, base: ImportBase) -> Result; diff --git a/src/game/import/nodrm.rs b/src/game/import/nodrm.rs index 7ad567b..b362902 100644 --- a/src/game/import/nodrm.rs +++ b/src/game/import/nodrm.rs @@ -1,8 +1,8 @@ use std::path::{Path, PathBuf}; +use super::{GameImporter, ImportBase}; use crate::error::{Error, IoError}; use crate::game::error::GameError; -use super::{GameImporter, ImportBase}; use crate::game::registry::{ActiveDistribution, GameData}; use crate::ts::v1::models::ecosystem::GameDefPlatform; @@ -33,8 +33,9 @@ impl GameImporter for NoDrmImporter { .custom_exe .clone() .or_else(|| super::find_game_exe(&r2mm.exe_names, &self.game_dir)) - .ok_or_else(|| { - GameError::ExeNotFound { possible_names: r2mm.exe_names.clone(), base_path: self.game_dir.clone() } + .ok_or_else(|| GameError::ExeNotFound { + possible_names: r2mm.exe_names.clone(), + base_path: self.game_dir.clone(), })?; let dist = ActiveDistribution { dist: GameDefPlatform::Other, diff --git a/src/game/import/steam.rs b/src/game/import/steam.rs index 7db54d6..0f58691 100644 --- a/src/game/import/steam.rs +++ b/src/game/import/steam.rs @@ -40,9 +40,9 @@ impl GameImporter for SteamImporter { .as_ref() .map_or_else(SteamDir::locate, |x| SteamDir::from_dir(x)) .map_err(|e: steamlocate::Error| match e { - steamlocate::Error::InvalidSteamDir(_) => { - GameError::SteamDirBadPath(self.steam_dir.as_ref().unwrap().to_path_buf()) - } + steamlocate::Error::InvalidSteamDir(_) => GameError::SteamDirBadPath( + self.steam_dir.as_ref().unwrap().to_path_buf(), + ), steamlocate::Error::FailedLocate(_) => GameError::SteamDirNotFound, _ => unreachable!(), })?; @@ -75,11 +75,10 @@ impl GameImporter for SteamImporter { .iter() .map(|x| app_dir.join(x)) .find(|x| x.is_file()) - .ok_or_else(|| { - GameError::ExeNotFound { - possible_names: r2mm.exe_names.clone(), - base_path: app_dir.clone(), - }})?; + .ok_or_else(|| GameError::ExeNotFound { + possible_names: r2mm.exe_names.clone(), + base_path: app_dir.clone(), + })?; let dist = ActiveDistribution { dist: GameDefPlatform::Steam { diff --git a/src/game/mod.rs b/src/game/mod.rs index f6b4fde..f450dfc 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -1,5 +1,5 @@ pub mod ecosystem; +pub mod error; pub mod import; pub mod proc; pub mod registry; -pub mod error; diff --git a/src/game/proc.rs b/src/game/proc.rs index b9a6517..9948cda 100644 --- a/src/game/proc.rs +++ b/src/game/proc.rs @@ -1,43 +1,44 @@ -use std::{ffi::OsStr, path::{Path, PathBuf}}; -use sysinfo::{ - Pid, - ProcessExt, - System, - SystemExt +use std::{ + ffi::OsStr, + path::{Path, PathBuf}, }; +use sysinfo::{Pid, ProcessExt, System, SystemExt}; + use crate::error::Error; pub fn get_pid_files(dir: &Path) -> Result, Error> { - let ext = OsStr::new("pid"); - let files = dir - .read_dir()? - .filter_map(|x| x.ok()) - .filter(|x| x.path().extension() == Some(ext)) - .map(|x| x.path()) - .collect(); - - Ok(files) + let ext = OsStr::new("pid"); + let files = dir + .read_dir()? + .filter_map(|x| x.ok()) + .filter(|x| x.path().extension() == Some(ext)) + .map(|x| x.path()) + .collect(); + + Ok(files) } pub fn is_running(pid: usize) -> bool { - let mut system = System::new(); - system.refresh_processes(); + let mut system = System::new(); + system.refresh_processes(); - system.process(Pid::from(pid)).is_some() + system.process(Pid::from(pid)).is_some() } pub fn kill(pid: usize) { - let mut system = System::new(); - system.refresh_processes(); + let mut system = System::new(); + system.refresh_processes(); - let proc = system.process(Pid::from(pid)).expect("Expected a running process."); - proc.kill(); + let proc = system + .process(Pid::from(pid)) + .expect("Expected a running process."); + proc.kill(); } pub fn get_name(pid: usize) -> Option { - let system = System::new(); - let proc = system.process(Pid::from(pid))?; + let system = System::new(); + let proc = system.process(Pid::from(pid))?; - Some(proc.name().to_string()) + Some(proc.name().to_string()) } diff --git a/src/main.rs b/src/main.rs index a0e20c1..50e6df8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,14 @@ #![allow(dead_code)] -use std::io::{self, Stdin}; +use std::io; use std::path::PathBuf; use clap::Parser; use cli::{ExternSubcommand, InitSubcommand}; use colored::Colorize; use directories::BaseDirs; -use error::{IoError, Error}; -use game::import::{select_importer, GameImporter}; +use error::{Error, IoError}; +use game::import::GameImporter; use once_cell::sync::Lazy; use project::error::ProjectError; use project::ProjectKind; @@ -353,7 +353,7 @@ async fn main() -> Result<(), Error> { Ok(()) } }, - Commands::Server { project_path }=> { + Commands::Server { project_path } => { let read = io::stdin(); let write = io::stdout(); server::spawn(read, write, &project_path).await?; @@ -365,10 +365,12 @@ async fn main() -> Result<(), Error> { match command { ExternSubcommand::GameData { game_id } => { let base = ImportBase::new(&game_id).await?; - let game_data = import::select_importer(&base)? - .construct(base)?; + let game_data = import::select_importer(&base)?.construct(base)?; - println!("{}", serde_json::to_string_pretty(&game_data.active_distribution)?); + println!( + "{}", + serde_json::to_string_pretty(&game_data.active_distribution)? + ); } } diff --git a/src/package/cache.rs b/src/package/cache.rs index 2425ff3..b596374 100644 --- a/src/package/cache.rs +++ b/src/package/cache.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use once_cell::sync::Lazy; -use crate::error::{IoResultToTcli, Error}; +use crate::error::{Error, IoResultToTcli}; use crate::ts::package_reference::PackageReference; use crate::util::TempFile; use crate::TCLI_HOME; diff --git a/src/package/index.rs b/src/package/index.rs index cb84a17..7995590 100644 --- a/src/package/index.rs +++ b/src/package/index.rs @@ -12,12 +12,12 @@ use serde::{Deserialize, Serialize}; use tokio::fs::OpenOptions; use tokio::io::AsyncWriteExt; -use crate::util::file; -use crate::error::{IoError, Error}; +use crate::error::{Error, IoError}; use crate::ts::experimental; use crate::ts::experimental::index::PackageIndexEntry; use crate::ts::package_reference::PackageReference; use crate::ts::version::Version; +use crate::util::file; #[derive(Serialize, Deserialize)] struct IndexHeader { @@ -117,7 +117,8 @@ impl PackageIndex { inner.name, Version::from_str(inner.version_number).unwrap(), ) - }.unwrap(); + } + .unwrap(); let entry = LookupTableEntry { start, @@ -134,7 +135,7 @@ impl PackageIndex { let header_path = index_dir.join("header.json"); let header = IndexHeader { - update_time: experimental::index::get_index_update_time().await? + update_time: experimental::index::get_index_update_time().await?, }; fs::write(header_path, serde_json::to_string_pretty(&header)?)?; @@ -192,7 +193,10 @@ impl PackageIndex { } /// Get a package which matches the given package reference. - pub fn get_package(&self, reference: impl Borrow) -> Option { + pub fn get_package( + &self, + reference: impl Borrow, + ) -> Option { let entry_idx = self.strict_lookup.get(&reference.borrow().to_string())?; let entry = self.lookup.get(*entry_idx)?; diff --git a/src/package/install/api.rs b/src/package/install/api.rs index ec38d3e..322e084 100644 --- a/src/package/install/api.rs +++ b/src/package/install/api.rs @@ -2,10 +2,10 @@ use std::path::PathBuf; use serde::{Deserialize, Serialize}; -use crate::ts::version::Version; use crate::ts::package_reference::PackageReference; +use crate::ts::version::Version; -/// This is the minimum support +/// This is the minimum support pub static PROTOCOL_VERSION: Version = Version { major: 1, minor: 0, @@ -75,9 +75,9 @@ pub enum Response { post_hook_context: Option, }, StartGame { - pid: u32, + pid: u32, }, Error { message: String, - } + }, } diff --git a/src/package/install/mod.rs b/src/package/install/mod.rs index d6bcc29..ba45745 100644 --- a/src/package/install/mod.rs +++ b/src/package/install/mod.rs @@ -1,21 +1,21 @@ use std::env; use std::fs; -use std::path::{PathBuf, Path}; +use std::path::{Path, PathBuf}; use std::process::Stdio; use colored::Colorize; use tokio::io::AsyncReadExt; use tokio::process::Command; -use self::api::{Request, TrackedFile}; use self::api::Response; use self::api::PROTOCOL_VERSION; +use self::api::{Request, TrackedFile}; use self::manifest::InstallerManifest; use super::error::PackageError; use super::Package; -use crate::error::IoError; use crate::error::Error; -use crate::ui::reporter::{Progress, VoidProgress, ProgressBarTrait}; +use crate::error::IoError; +use crate::ui::reporter::{Progress, ProgressBarTrait, VoidProgress}; pub mod api; mod legacy_compat; @@ -33,7 +33,7 @@ impl Installer { let test = VoidProgress {}; let cache_dir = match package.get_path().await { Some(x) => x, - None => package.download(test.add_bar().as_ref()).await? + None => package.download(test.add_bar().as_ref()).await?, }; let manifest = { @@ -72,7 +72,12 @@ impl Installer { // Validate that the installer is (a) executable and (b) is using a valid protocol version. let response = installer.run(&Request::Version).await?; - let Response::Version { author: _, identifier: _, protocol } = response else { + let Response::Version { + author: _, + identifier: _, + protocol, + } = response + else { Err(PackageError::InstallerBadResponse { package_id: package.identifier.to_string(), message: "The installer did not respond with a valid or otherwise serializable Version response variant.".to_string(), @@ -100,7 +105,7 @@ impl Installer { } Installer { - exec_path: override_installer + exec_path: override_installer, } } @@ -110,7 +115,7 @@ impl Installer { package_dir: &Path, state_dir: &Path, staging_dir: &Path, - reporter: &dyn ProgressBarTrait + reporter: &dyn ProgressBarTrait, ) -> Result, Error> { // Determine if the package is a modloader or not. let is_modloader = package.identifier.name.to_lowercase().contains("bepinex"); @@ -134,19 +139,21 @@ impl Installer { let response = self.run(&request).await?; match response { - Response::PackageInstall { tracked_files, post_hook_context: _ } => { - Ok(tracked_files) - } + Response::PackageInstall { + tracked_files, + post_hook_context: _, + } => Ok(tracked_files), - Response::Error { message } => { - Err(PackageError::InstallerError { message })? - } + Response::Error { message } => Err(PackageError::InstallerError { message })?, x => { let message = format!("Didn't recieve one of the expected variants: Response::PackageInstall or Response::Error. Got: {x:#?}"); - Err(PackageError::InstallerBadResponse { package_id: package.identifier.to_string(), message })? + Err(PackageError::InstallerBadResponse { + package_id: package.identifier.to_string(), + message, + })? } } } @@ -158,7 +165,7 @@ impl Installer { state_dir: &Path, staging_dir: &Path, tracked_files: Vec, - reporter: &dyn ProgressBarTrait + reporter: &dyn ProgressBarTrait, ) -> Result<(), Error> { let is_modloader = package.identifier.name.to_lowercase().contains("bepinex"); let request = Request::PackageUninstall { @@ -181,19 +188,31 @@ impl Installer { let response = self.run(&request).await?; match response { - Response::PackageUninstall { post_hook_context: _ } => Ok(()), + Response::PackageUninstall { + post_hook_context: _, + } => Ok(()), Response::Error { message } => Err(PackageError::InstallerError { message })?, x => { let message = format!("Didn't recieve one of the expected variants: Response::PackageInstall or Response::Error. Got: {x:#?}"); - Err(PackageError::InstallerBadResponse { package_id: package.identifier.to_string(), message })? + Err(PackageError::InstallerBadResponse { + package_id: package.identifier.to_string(), + message, + })? } } } /// Start the game and drop a PID file in the state directory of the current project. - pub async fn start_game(&self, mods_enabled: bool, state_dir: &Path, game_dir: &Path, game_exe: &Path, args: Vec) -> Result { + pub async fn start_game( + &self, + mods_enabled: bool, + state_dir: &Path, + game_dir: &Path, + game_exe: &Path, + args: Vec, + ) -> Result { let request = Request::StartGame { mods_enabled, project_state: state_dir.to_path_buf(), @@ -230,11 +249,7 @@ impl Installer { .await?; let mut err_str = String::new(); - child - .stderr - .unwrap() - .read_to_string(&mut err_str) - .await?; + child.stderr.unwrap().read_to_string(&mut err_str).await?; if !err_str.is_empty() { println!("installer stderr:"); diff --git a/src/package/mod.rs b/src/package/mod.rs index f1496ec..c89e943 100644 --- a/src/package/mod.rs +++ b/src/package/mod.rs @@ -1,8 +1,8 @@ pub mod cache; +pub mod error; pub mod index; pub mod install; pub mod resolver; -pub mod error; use std::borrow::Borrow; use std::fs::File; @@ -16,15 +16,14 @@ use serde_with::{self, serde_as, DisplayFromStr}; use tokio::fs; use tokio::io::{AsyncReadExt, AsyncWriteExt}; -use crate::error::{IoError, IoResultToTcli, Error}; +use self::index::PackageIndex; +use crate::error::{Error, IoError, IoResultToTcli}; use crate::ts::package_manifest::PackageManifestV1; use crate::ts::package_reference::PackageReference; use crate::ts::{self, CLIENT}; use crate::ui::reporter::ProgressBarTrait; use crate::TCLI_HOME; -use self::index::PackageIndex; - #[derive(Serialize, Deserialize, Debug)] pub struct PackageMetadata { #[serde(flatten)] @@ -134,10 +133,9 @@ impl Package { /// Resolve the package into a discrete path, returning None if it does not exist locally. pub async fn get_path(&self) -> Option { match &self.source { - PackageSource::Local(path) => add_to_cache( - &self.identifier, - File::open(path).map_fs_error(path).ok()?, - ).ok(), + PackageSource::Local(path) => { + add_to_cache(&self.identifier, File::open(path).map_fs_error(path).ok()?).ok() + } PackageSource::Cache(path) => Some(path.clone()), PackageSource::Remote(_) => None, } @@ -154,7 +152,11 @@ impl Package { serde_json::from_str::(&str)? }; let icon = package_dir.join("icon.png"); - let reference = package_dir.file_name().unwrap().to_string_lossy().to_string(); + let reference = package_dir + .file_name() + .unwrap() + .to_string_lossy() + .to_string(); Ok(Some(PackageMetadata { manifest, diff --git a/src/package/resolver.rs b/src/package/resolver.rs index 4e2461f..764c223 100644 --- a/src/package/resolver.rs +++ b/src/package/resolver.rs @@ -49,10 +49,7 @@ impl DependencyGraph { .map(|x| ((graph[x]).to_loose_ident_string(), x)) .collect::>(); - DependencyGraph { - graph, - index - } + DependencyGraph { graph, index } } pub fn into_inner(self) -> InnerDepGraph { @@ -179,7 +176,7 @@ impl DependencyGraph { Some((other_index, other_value)) if self_value.version < other_value.version => { add.push((other_index, (*other_value).clone())); del.push((self_index, (*self_value).clone())); - }, + } Some(_) => (), None => del.push((self_index, (*self_value).clone())), } @@ -187,26 +184,24 @@ impl DependencyGraph { // Handle the remaining case: // - !this_table.contains(other_value) => ADD other_value - add.extend(other_table - .iter() - .filter_map(|(key, (other_index, other_value))| match self_table.get(key) { - Some(_) => None, - None => Some((other_index, (*other_value).clone())) - })); + add.extend( + other_table + .iter() + .filter_map( + |(key, (other_index, other_value))| match self_table.get(key) { + Some(_) => None, + None => Some((other_index, (*other_value).clone())), + }, + ), + ); // Sort entries by their index (i, _) to maintain order. add.sort_by(|a, b| a.0.partial_cmp(b.0).unwrap()); del.sort_by(|a, b| a.0.partial_cmp(b.0).unwrap()); GraphDelta { - add: add - .into_iter() - .map(|(_, x)| x) - .collect::>(), - del: del - .into_iter() - .map(|(_, x)| x) - .collect::>(), + add: add.into_iter().map(|(_, x)| x).collect::>(), + del: del.into_iter().map(|(_, x)| x).collect::>(), } } } @@ -263,7 +258,11 @@ pub async fn resolve_packages(packages: Vec) -> Result) -> Result { let path = path.as_ref(); - let text = fs::read_to_string(path).map_err(|_| ProjectError::NoProjectFile(path.into()))?; + let text = + fs::read_to_string(path).map_err(|_| ProjectError::NoProjectFile(path.into()))?; let mut manifest: ProjectManifest = toml::from_str(&text)?; diff --git a/src/project/mod.rs b/src/project/mod.rs index 90d8a6e..834b716 100644 --- a/src/project/mod.rs +++ b/src/project/mod.rs @@ -14,7 +14,7 @@ use tokio::sync::Semaphore; use zip::write::SimpleFileOptions; use self::lock::LockFile; -use crate::error::{IoError, IoResultToTcli, Error}; +use crate::error::{Error, IoError, IoResultToTcli}; use crate::game::registry::GameData; use crate::game::{proc, registry}; use crate::package::index::PackageIndex; @@ -30,12 +30,12 @@ use crate::ts::package_reference::PackageReference; use crate::ui::reporter::{Progress, Reporter}; use crate::{util, TCLI_HOME}; +pub mod error; pub mod lock; pub mod manifest; pub mod overrides; mod publish; mod state; -pub mod error; pub enum ProjectKind { Dev(ProjectOverrides), @@ -80,7 +80,9 @@ impl Project { pub fn validate(&self) -> Result<(), Error> { // A directory without a manifest is *not* a project. if !self.manifest_path.is_file() { - Err(ProjectError::NoProjectFile(self.manifest_path.to_path_buf()))?; + Err(ProjectError::NoProjectFile( + self.manifest_path.to_path_buf(), + ))?; } // Everything within .tcli is assumed to be replacable. Therefore we only care @@ -293,9 +295,9 @@ impl Project { multi: &dyn Progress, ) -> Result<(), Error> { let packages = try_join_all( - packages - .into_iter() - .map(|x| async move { Package::from_any(x).await }), + packages + .into_iter() + .map(|x| async move { Package::from_any(x).await }), ) .await?; @@ -310,7 +312,7 @@ impl Project { // Resolve the package, either downloading it or returning its cached path. let package_dir = match package.get_path().await { Some(x) => x, - None => package.download(bar).await? + None => package.download(bar).await?, }; let tracked_files = installer .install_package( @@ -392,7 +394,7 @@ impl Project { let package_dir = match package.get_path().await { Some(x) => x, - None => package.download(bar).await? + None => package.download(bar).await?, }; let state_entry = statefile.state.get(&package.identifier); @@ -425,19 +427,17 @@ impl Project { let staged = &entry.staged; // Determine the list of entries that will be invalidated. - let invalid_staged_entries = staged - .iter() - .filter(|x| !x.action.path.is_file()); + let invalid_staged_entries = staged.iter().filter(|x| !x.action.path.is_file()); for staged_entry in invalid_staged_entries { // Each dest is checked if it (a) exists and (b) is the same as orig. - let dests_to_remove = staged_entry - .dest - .iter() - .filter_map(|path| match staged_entry.is_same_as(path) { - Ok(x) if x => Some(Ok(path)), - Ok(_) => None, - Err(e) => Some(Err(e)), + let dests_to_remove = + staged_entry.dest.iter().filter_map(|path| { + match staged_entry.is_same_as(path) { + Ok(x) if x => Some(Ok(path)), + Ok(_) => None, + Err(e) => Some(Err(e)), + } }); for dest in dests_to_remove { @@ -696,4 +696,3 @@ impl Project { LockFile::open_or_new(&self.lockfile_path) } } - diff --git a/src/project/publish.rs b/src/project/publish.rs index 281be1a..123a861 100644 --- a/src/project/publish.rs +++ b/src/project/publish.rs @@ -1,16 +1,12 @@ use std::path::PathBuf; -use crate::error::{IoError, Error}; +use super::error::ProjectError; +use crate::error::{Error, IoError}; use crate::project::manifest::ProjectManifest; use crate::ts::experimental::models::publish::PackageSubmissionMetadata; use crate::ts::experimental::publish; -use super::error::ProjectError; - -pub async fn publish( - manifest: &ProjectManifest, - archive_path: PathBuf, -) -> Result<(), Error> { +pub async fn publish(manifest: &ProjectManifest, archive_path: PathBuf) -> Result<(), Error> { let package = manifest .package .as_ref() @@ -25,10 +21,7 @@ pub async fn publish( let usermedia = publish::upload_file(archive_path).await?; publish::package_submit(&PackageSubmissionMetadata { author_name: package.namespace.to_string(), - communities: publish - .iter() - .map(|p| p.community.clone()) - .collect(), + communities: publish.iter().map(|p| p.community.clone()).collect(), has_nsfw_content: package.contains_nsfw_content, community_categories: publish .iter() diff --git a/src/server/lock.rs b/src/server/lock.rs index 5efda8b..dc70013 100644 --- a/src/server/lock.rs +++ b/src/server/lock.rs @@ -33,9 +33,10 @@ impl Drop for ProjectLock { #[cfg(test)] mod test { - use super::*; use tempfile::TempDir; + use super::*; + /// Test that project locks behave in the following way: /// - Attempting to lock an already locked project MUST return None. /// - Attempting to lock a project that is not locked will return a ProjectLock. diff --git a/src/server/method/mod.rs b/src/server/method/mod.rs index 8c24916..dc44c04 100644 --- a/src/server/method/mod.rs +++ b/src/server/method/mod.rs @@ -7,12 +7,11 @@ use futures::channel::mpsc::Sender; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; -use crate::project::Project; - use self::package::PackageMethod; use self::project::ProjectMethod; use super::proto::Response; use super::{Error, ServerError}; +use crate::project::Project; pub trait Routeable { async fn route(&self, ctx: RwLock, send: Sender>); diff --git a/src/server/method/package.rs b/src/server/method/package.rs index 1cc88c6..68f1799 100644 --- a/src/server/method/package.rs +++ b/src/server/method/package.rs @@ -1,13 +1,12 @@ use serde::{Deserialize, Serialize}; -use crate::package::{cache, Package}; +use super::Error; +use crate::package::cache; +use crate::package::index::PackageIndex; use crate::server::proto::{Id, Response}; +use crate::server::{Runtime, ServerError}; use crate::ts::package_reference::PackageReference; use crate::TCLI_HOME; -use crate::server::{Runtime, ServerError}; -use crate::package::index::PackageIndex; - -use super::Error; #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] pub enum PackageMethod { @@ -35,7 +34,7 @@ impl PackageMethod { let index = PackageIndex::open(&TCLI_HOME).await?; let package = index.get_package(&data.package).unwrap(); rt.send(Response::data_ok(Id::String("diowadaw".into()), package)); - }, + } Self::IsCached(data) => { let is_cached = cache::is_cached(&data.package); rt.send(Response::data_ok(Id::String("dwdawdwa".into()), is_cached)); @@ -43,7 +42,7 @@ impl PackageMethod { Self::SyncIndex => { PackageIndex::sync(&TCLI_HOME).await?; rt.send(Response::ok(Id::String("dwada".into()))); - }, + } } Ok(()) diff --git a/src/server/method/project.rs b/src/server/method/project.rs index 51e9f23..63314fc 100644 --- a/src/server/method/project.rs +++ b/src/server/method/project.rs @@ -1,14 +1,14 @@ use std::path::PathBuf; use std::sync::Arc; -use crate::project::ProjectKind; -use crate::server::proto::{Id, Response, ResponseData}; -use crate::{project::Project, ui::reporter::VoidReporter}; -use crate::ts::package_reference::PackageReference; -use crate::server::{Runtime, ServerError}; use serde::{Deserialize, Serialize}; use super::Error; +use crate::project::ProjectKind; +use crate::server::proto::{Id, Response, ResponseData}; +use crate::server::{Runtime, ServerError}; +use crate::ts::package_reference::PackageReference; +use crate::{project::Project, ui::reporter::VoidReporter}; #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] pub enum ProjectMethod { @@ -25,7 +25,7 @@ pub enum ProjectMethod { } impl From> for ServerError { - fn from(val: Option) -> Self { + fn from(_val: Option) -> Self { ServerError::InvalidContext } } @@ -48,23 +48,26 @@ impl ProjectMethod { match self { ProjectMethod::Open(OpenProject { path }) => { // Unlock the previous ctx (if it exists) and relock this one. - rt.proj = Arc::new(Project::open(path) - .unwrap_or(Project::create_new(path, true, ProjectKind::Profile)?)) - }, + rt.proj = Arc::new(Project::open(path).unwrap_or(Project::create_new( + path, + true, + ProjectKind::Profile, + )?)) + } ProjectMethod::GetMetadata => { rt.send(Response { id: Id::String("OK".into()), - data: ResponseData::Result(format!("{:?}", rt.proj.statefile_path)) + data: ResponseData::Result(format!("{:?}", rt.proj.statefile_path)), }); - }, + } ProjectMethod::AddPackages(packages) => { rt.proj.add_packages(&packages.packages[..])?; rt.proj.commit(Box::new(VoidReporter), false).await?; - }, + } ProjectMethod::RemovePackages(packages) => { rt.proj.remove_packages(&packages.packages[..])?; rt.proj.commit(Box::new(VoidReporter), false).await?; - }, + } ProjectMethod::InstalledPackages => { let lock = rt.proj.get_lockfile()?; let installed = lock.installed_packages().await?; @@ -73,7 +76,7 @@ impl ProjectMethod { id: Id::Int(installed.len() as _), data: ResponseData::Result(serde_json::to_string(&installed)?), }); - }, + } } Ok(()) diff --git a/src/server/mod.rs b/src/server/mod.rs index 889b780..cf60aa4 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -8,12 +8,11 @@ use lock::ProjectLock; use once_cell::sync::Lazy; use proto::ResponseData; +use self::proto::{Message, Request, Response}; use crate::error::Error; use crate::project::Project; use crate::ts; -use self::proto::{Message, Request, Response}; - mod lock; mod method; mod proto; @@ -68,7 +67,9 @@ struct Runtime { impl Runtime { pub fn send(&self, response: Response) { - self.tx.send(Message::Response(response)).expect("Failed to write to mpsc tx channel."); + self.tx + .send(Message::Response(response)) + .expect("Failed to write to mpsc tx channel."); } } @@ -81,7 +82,7 @@ struct RtContext { /// Create the server runtime from the provided read and write channels. /// This lives for the lifespan of the process. -pub async fn spawn(read: impl Read, write: impl Write, project_dir: &Path) -> Result<(), Error> { +pub async fn spawn(_read: impl Read, _write: impl Write, project_dir: &Path) -> Result<(), Error> { let (tx, rx) = mpsc::channel::(); let cancel = RwLock::new(false); @@ -100,7 +101,7 @@ pub async fn spawn(read: impl Read, write: impl Write, project_dir: &Path) -> Re ts::init_repository("https://thunderstore.io", None); loop { - if let Err(e) = stdin.read_line(&mut line) { + if let Err(_) = stdin.read_line(&mut line) { panic!(""); }; @@ -109,11 +110,13 @@ pub async fn spawn(read: impl Read, write: impl Write, project_dir: &Path) -> Re match Message::from_json(&line) { Ok(msg) => route(msg, &mut rt).await?, Err(e) => { - rt.tx.send(Message::Response(Response { - id: proto::Id::String("FUCK".into()), - data: ResponseData::Error(e.to_string()), - })).unwrap(); - }, + rt.tx + .send(Message::Response(Response { + id: proto::Id::String("FUCK".into()), + data: ResponseData::Error(e.to_string()), + })) + .unwrap(); + } }; // if let Ok(msg) = Message::from_json(&line) { @@ -146,7 +149,6 @@ async fn route_rq(rq: Request, rt: &mut Runtime) -> Result<(), Error> { Ok(()) } - // /// The daemon's entrypoint. This is a psuedo event loop which does the following in step: // /// 1. Read JSON-RPC input(s) from stdin. // /// 2. Route each input. @@ -172,12 +174,12 @@ async fn route_rq(rq: Request, rt: &mut Runtime) -> Result<(), Error> { // } // } -fn respond_msg(recv: Receiver, cancel: RwLock) { +fn respond_msg(recv: Receiver, _cancel: RwLock) { let mut stdout = io::stdout(); while let Ok(res) = recv.recv() { let msg = serde_json::to_string(&res); - stdout.write_all(msg.unwrap().as_bytes()); - stdout.write_all("\n".as_bytes()); + stdout.write_all(msg.unwrap().as_bytes()).unwrap(); + stdout.write_all("\n".as_bytes()).unwrap(); } } diff --git a/src/server/proto.rs b/src/server/proto.rs index 3d9d585..82f9024 100644 --- a/src/server/proto.rs +++ b/src/server/proto.rs @@ -1,11 +1,10 @@ use serde::{Deserialize, Serialize}; use serde_json::Value; +use super::ServerError; use crate::server::method::Method; use crate::server::Error; -use super::ServerError; - const JRPC_VER: &str = "2.0"; #[derive(Serialize, Deserialize, Debug, PartialEq, Eq)] @@ -17,12 +16,16 @@ pub enum Message { impl Message { pub fn from_json(json: &str) -> Result { - let msg = serde_json::from_str::(json).inspect_err(|e| { - println!("{e:?}"); - }).map_err(ServerError::InvalidJson)?; + let msg = serde_json::from_str::(json) + .inspect_err(|e| { + println!("{e:?}"); + }) + .map_err(ServerError::InvalidJson)?; match msg { - Message::Request(x) if x.jsonrpc != JRPC_VER => Err(ServerError::InvalidMethod(x.jsonrpc))?, + Message::Request(x) if x.jsonrpc != JRPC_VER => { + Err(ServerError::InvalidMethod(x.jsonrpc))? + } _ => Ok(msg), } } @@ -133,7 +136,7 @@ impl From for RpcError { mod test { use super::*; use crate::server::method::package::PackageMethod; - use crate::server::method::project::{ProjectMethod, OpenProject}; + use crate::server::method::project::{OpenProject, ProjectMethod}; use crate::server::ServerError; #[test] @@ -178,7 +181,10 @@ mod test { // ...but should then fail to be converted into a typed Request. let rq = Request::try_from(rq); - assert!(matches!(rq, Err(Error::Server(ServerError::InvalidMethod(..))))); // Invalid methods should still be deserialized aok as they're checked by typed Request struct. + assert!(matches!( + rq, + Err(Error::Server(ServerError::InvalidMethod(..))) + )); // Invalid methods should still be deserialized aok as they're checked by typed Request struct. // Likewise, valid methods with garbage data should also fail when converted to typed. let data = r#"{ "jsonrpc": "2.0", "id": "oksamies", "method": "project/set_context", "params": { "garbage": 1 } }"#; @@ -189,6 +195,9 @@ mod test { let rq = Request::try_from(rq); panic!("{rq:?}"); - assert!(matches!(rq, Err(Error::Server(ServerError::InvalidJson(..))))); + assert!(matches!( + rq, + Err(Error::Server(ServerError::InvalidJson(..))) + )); } } diff --git a/src/ts/experimental/index.rs b/src/ts/experimental/index.rs index 57869a4..2ad7562 100644 --- a/src/ts/experimental/index.rs +++ b/src/ts/experimental/index.rs @@ -1,112 +1,116 @@ use async_compression::futures::bufread::GzipDecoder; use chrono::NaiveDateTime; -use futures::{TryStreamExt, AsyncBufReadExt, StreamExt}; use futures::io::{self, BufReader, ErrorKind}; +use futures::{AsyncBufReadExt, StreamExt, TryStreamExt}; use futures_util::Stream; -use serde::{Serialize, Deserialize}; +use serde::{Deserialize, Serialize}; -use crate::error::{IoError, Error}; +use crate::error::{Error, IoError}; use crate::ts::package_reference::PackageReference; -use crate::ts::{CLIENT, EX}; use crate::ts::version::Version; +use crate::ts::{CLIENT, EX}; #[derive(Serialize, Deserialize, Debug)] pub struct PackageIndexEntry { - pub namespace: String, - pub name: String, - #[serde(rename = "version_number")] - pub version: Version, - pub file_format: Option, - pub file_size: usize, - pub dependencies: Vec, + pub namespace: String, + pub name: String, + #[serde(rename = "version_number")] + pub version: Version, + pub file_format: Option, + pub file_size: usize, + pub dependencies: Vec, } pub async fn get_index() -> Result, Error> { - let response = CLIENT - .get(format!("{EX}/package-index")) - .send().await? - .error_for_status()?; + let response = CLIENT + .get(format!("{EX}/package-index")) + .send() + .await? + .error_for_status()?; - let reader = response - .bytes_stream() - .map_err(|e| io::Error::new(ErrorKind::Other, e)) - .into_async_read(); + let reader = response + .bytes_stream() + .map_err(|e| io::Error::new(ErrorKind::Other, e)) + .into_async_read(); - let decoder = BufReader::new(GzipDecoder::new(reader)); + let decoder = BufReader::new(GzipDecoder::new(reader)); - let mut lines = decoder.lines(); - let mut entries = Vec::new(); + let mut lines = decoder.lines(); + let mut entries = Vec::new(); - while let Some(line) = lines.next().await { - let line = line?; - let parsed = serde_json::from_str(&line)?; + while let Some(line) = lines.next().await { + let line = line?; + let parsed = serde_json::from_str(&line)?; - entries.push(parsed); - } + entries.push(parsed); + } - Ok(entries) + Ok(entries) } -pub async fn get_index_streamed() -> Result>, Error> { - let response = CLIENT - .get(format!("{EX}/package-index")) - .send().await? - .error_for_status()?; - - let reader = response - .bytes_stream() - .map_err(|e| io::Error::new(ErrorKind::Other, e)) - .into_async_read(); - - let decoder = BufReader::new(GzipDecoder::new(reader)); - let lines = decoder - .lines() - .map(|x| match x { - Ok(x) => serde_json::from_str(&x).map_err(|e| e.into()), - Err(e) => Err(Error::Io(IoError::Native(e, None))) - }); - - Ok(lines) +pub async fn get_index_streamed( +) -> Result>, Error> { + let response = CLIENT + .get(format!("{EX}/package-index")) + .send() + .await? + .error_for_status()?; + + let reader = response + .bytes_stream() + .map_err(|e| io::Error::new(ErrorKind::Other, e)) + .into_async_read(); + + let decoder = BufReader::new(GzipDecoder::new(reader)); + let lines = decoder.lines().map(|x| match x { + Ok(x) => serde_json::from_str(&x).map_err(|e| e.into()), + Err(e) => Err(Error::Io(IoError::Native(e, None))), + }); + + Ok(lines) } -pub async fn get_index_streamed_raw() -> Result>, Error> { - let response = CLIENT - .get(format!("{EX}/package-index")) - .send().await? - .error_for_status()?; - - let reader = response - .bytes_stream() - .map_err(|e| io::Error::new(ErrorKind::Other, e)) - .into_async_read(); - - let lines = BufReader::new(GzipDecoder::new(reader)) - .lines() - .map(|x| match x { - Ok(x) => Ok(x), - Err(e) => Err(IoError::Native(e, None)), - }); - - Ok(lines) +pub async fn get_index_streamed_raw() -> Result>, Error> +{ + let response = CLIENT + .get(format!("{EX}/package-index")) + .send() + .await? + .error_for_status()?; + + let reader = response + .bytes_stream() + .map_err(|e| io::Error::new(ErrorKind::Other, e)) + .into_async_read(); + + let lines = BufReader::new(GzipDecoder::new(reader)) + .lines() + .map(|x| match x { + Ok(x) => Ok(x), + Err(e) => Err(IoError::Native(e, None)), + }); + + Ok(lines) } pub async fn get_index_update_time() -> Result { - let response = CLIENT - .head(format!("{EX}/package-index")) - .send().await? - .error_for_status()?; - - let headers = response.headers(); - let date = headers - .get("date") - .expect("Failed to parse date from package-index API header.") - .to_str() - .unwrap(); - - // Fri, 15 Mar 2024 18:49:19 GMT - let date_format = "%a, %d %b %Y %H:%M:%S %Z"; - let date = NaiveDateTime::parse_from_str(date, date_format) - .unwrap_or_else(|e| panic!("Failed to parse datetime '{date}': {e:?}")); - - Ok(date) + let response = CLIENT + .head(format!("{EX}/package-index")) + .send() + .await? + .error_for_status()?; + + let headers = response.headers(); + let date = headers + .get("date") + .expect("Failed to parse date from package-index API header.") + .to_str() + .unwrap(); + + // Fri, 15 Mar 2024 18:49:19 GMT + let date_format = "%a, %d %b %Y %H:%M:%S %Z"; + let date = NaiveDateTime::parse_from_str(date, date_format) + .unwrap_or_else(|e| panic!("Failed to parse datetime '{date}': {e:?}")); + + Ok(date) } diff --git a/src/ts/experimental/mod.rs b/src/ts/experimental/mod.rs index 4588714..85f3d7b 100644 --- a/src/ts/experimental/mod.rs +++ b/src/ts/experimental/mod.rs @@ -1,4 +1,4 @@ +pub mod index; pub mod models; pub mod package; pub mod publish; -pub mod index; diff --git a/src/ts/mod.rs b/src/ts/mod.rs index a8c9ec9..c4e91be 100644 --- a/src/ts/mod.rs +++ b/src/ts/mod.rs @@ -4,12 +4,12 @@ use once_cell::sync::{Lazy, OnceCell}; use reqwest::header::HeaderValue; use reqwest::Client; +pub mod error; pub mod experimental; pub mod package_manifest; pub mod package_reference; pub mod v1; pub mod version; -pub mod error; pub struct RepositoryUrl(OnceCell); diff --git a/src/ts/v1/models/ecosystem.rs b/src/ts/v1/models/ecosystem.rs index 7a62112..07f8d6b 100644 --- a/src/ts/v1/models/ecosystem.rs +++ b/src/ts/v1/models/ecosystem.rs @@ -62,7 +62,9 @@ impl GameDefPlatform { /// the ecosystem schema, preferably as a compile time check. pub fn ident_from_name<'a>(&'a self, name: &str) -> Option<&'a str> { match self { - GameDefPlatform::EpicGames { identifier } if name == "epic-games-store" => Some(identifier), + GameDefPlatform::EpicGames { identifier } if name == "epic-games-store" => { + Some(identifier) + } GameDefPlatform::GamePass { identifier } if name == "gamepass" => Some(identifier), GameDefPlatform::Origin { identifier } if name == "origin" || name == "ea" => { Some(identifier) diff --git a/src/ts/v1/package.rs b/src/ts/v1/package.rs index 359022b..b3bc310 100644 --- a/src/ts/v1/package.rs +++ b/src/ts/v1/package.rs @@ -24,5 +24,8 @@ pub async fn get_community_all(community: &str) -> Result, E } pub fn download_for_package(ident: &PackageReference) -> String { - format!("https://thunderstore.io/package/download/{}/{}/{}/", ident.namespace, ident.name, ident.version) + format!( + "https://thunderstore.io/package/download/{}/{}/{}/", + ident.namespace, ident.name, ident.version + ) } diff --git a/src/util/file.rs b/src/util/file.rs index 47b0bba..e5f12d9 100644 --- a/src/util/file.rs +++ b/src/util/file.rs @@ -1,10 +1,12 @@ use std::fs::{self, File}; use std::io; use std::path::Path; -use md5::{Digest, Md5}; + use md5::digest::FixedOutput; +use md5::{Digest, Md5}; use walkdir::WalkDir; -use crate::error::{IoError, Error}; + +use crate::error::{Error, IoError}; pub fn md5(file: &Path) -> Result { let mut md5 = Md5::new(); diff --git a/src/util/reg.rs b/src/util/reg.rs index 6f5dc07..6b7201e 100644 --- a/src/util/reg.rs +++ b/src/util/reg.rs @@ -23,9 +23,8 @@ pub struct RegKeyVal { mod inner { use winreg::RegKey; - use crate::error::IoError; - use super::{HKey, RegKeyVal}; + use crate::error::IoError; pub fn get_value_at(hkey: HKey, subkey: &str, name: &str) -> Result { open_subkey(hkey, subkey)? diff --git a/src/util/temp_file.rs b/src/util/temp_file.rs index f3f63ee..f9f4fdb 100644 --- a/src/util/temp_file.rs +++ b/src/util/temp_file.rs @@ -2,7 +2,7 @@ use std::path::{Path, PathBuf}; -use crate::error::{IoResultToTcli, Error}; +use crate::error::{Error, IoResultToTcli}; pub struct TempFile(Option, Option);