diff --git a/Cargo.lock b/Cargo.lock index cd94113..9ae5774 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,9 +75,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arbitrary" @@ -114,9 +114,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "block-buffer" @@ -176,21 +176,21 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets", + "windows-link", ] [[package]] name = "clap" -version = "4.5.29" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", "clap_derive", @@ -198,9 +198,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.29" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstream", "anstyle", @@ -210,9 +210,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", @@ -262,6 +262,15 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.10.0" @@ -304,15 +313,17 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "crossterm_winapi", + "derive_more", + "document-features", "mio", "parking_lot", - "rustix", + "rustix 1.0.7", "signal-hook", "signal-hook-mio", "winapi", @@ -339,9 +350,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" @@ -364,6 +375,27 @@ dependencies = [ "syn", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "digest" version = "0.10.7" @@ -407,6 +439,15 @@ dependencies = [ "syn", ] +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "embedded-io" version = "0.4.0" @@ -454,7 +495,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" dependencies = [ "cfg-if", - "rustix", + "rustix 0.38.44", "windows-sys 0.52.0", ] @@ -608,21 +649,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -631,31 +673,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -663,67 +685,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "2549ca8c7241c82f59c80ba2a6f415d931c5b58d24fb8412caa1a1f02c49139a" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "8197e866e47b68f8f7d95249e172903bec06004b18b2937f1095d40a0c57de04" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "idna" version = "1.0.3" @@ -737,9 +746,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -747,9 +756,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.5" +version = "0.25.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" dependencies = [ "bytemuck", "byteorder-lite", @@ -842,7 +851,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", ] @@ -872,11 +881,23 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "lock_api" @@ -957,7 +978,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "cfg_aliases", "libc", @@ -1103,6 +1124,15 @@ dependencies = [ "serde", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -1176,7 +1206,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -1207,9 +1237,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c75d7c5c6b673e58bf54d8544a9f432e3a925b0e80f7cd3602ab5c50c55519" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" dependencies = [ "const-oid", "digest", @@ -1228,9 +1258,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "8.5.0" +version = "8.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0" +checksum = "60e425e204264b144d4c929d126d0de524b40a961686414bab5040f7465c71be" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -1239,9 +1269,9 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.5.0" +version = "8.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478" +checksum = "6bf418c9a2e3f6663ca38b8a7134cc2c2167c9d69688860e8961e3faa731702e" dependencies = [ "proc-macro2", "quote", @@ -1252,9 +1282,9 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "8.5.0" +version = "8.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d" +checksum = "08d55b95147fe01265d06b3955db798bdaed52e60e2211c41137701b3aba8e21" dependencies = [ "sha2", "walkdir", @@ -1266,10 +1296,23 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -1317,7 +1360,7 @@ version = "15.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ee1e066dc922e513bda599c6ccb5f3bb2b0ea5870a579448f2622993f0a9a2f" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "clipboard-win", "fd-lock", @@ -1362,18 +1405,18 @@ checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -1382,9 +1425,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -1403,11 +1446,11 @@ dependencies = [ [[package]] name = "serialport" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ecfc4858c2266c7695d8b8460bbd612fa81bd2e250f5f0dd16195e4b4f8b3d8" +checksum = "2daa7abb9b965493e3c8f4184c6f46435484ff2538a332b886788cf6768b927b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "core-foundation", "core-foundation-sys", @@ -1422,9 +1465,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -1536,9 +1579,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", @@ -1587,9 +1630,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -1597,9 +1640,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -1609,26 +1652,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "typenum" version = "1.17.0" @@ -1695,12 +1745,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -1795,9 +1839,9 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.225.0" +version = "0.230.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f7eac0445cac73bcf09e6a97f83248d64356dccf9f2b100199769b6b42464e5" +checksum = "d4349d0943718e6e434b51b9639e876293093dca4b96384fb136ab5bd5ce6660" dependencies = [ "leb128fmt", "wasmparser", @@ -1805,11 +1849,11 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.225.0" +version = "0.230.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e5456165f81e64cb9908a0fe9b9d852c2c74582aa3fe2be3c2da57f937d3ae" +checksum = "808198a69b5a0535583370a51d459baa14261dfab04800c4864ee9e1a14346ed" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "hashbrown", "indexmap", "semver", @@ -1865,6 +1909,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-sys" version = "0.52.0" @@ -1949,30 +1999,24 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.2" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" +checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" dependencies = [ "memchr", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -1982,9 +2026,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", @@ -2015,18 +2059,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", @@ -2040,11 +2084,22 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -2053,9 +2108,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", @@ -2064,17 +2119,15 @@ dependencies = [ [[package]] name = "zip" -version = "2.2.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +checksum = "1dcb24d0152526ae49b9b96c1dcf71850ca1e0b882e4e28ed898a93c41334744" dependencies = [ "arbitrary", "crc32fast", "crossbeam-utils", - "displaydoc", "indexmap", "memchr", - "thiserror 2.0.11", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index c65ce4d..777d1bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,17 +19,17 @@ categories = [ [dependencies] # Simpler error handling -anyhow = "1.0.95" -# Get current date and time. -chrono = { version = "0.4.39", default-features = false, features = ["clock"] } +anyhow = "1.0.98" +# Get current date and time +chrono = { version = "0.4.41", default-features = false, features = ["clock"] } # Framework for parsing CLI args -clap = { version = "4.5.29", features = ["derive"] } +clap = { version = "4.5.37", features = ["derive"] } # Detect message boundaries in serial port output from device cobs = "0.3.0" # TUI for the "monitor" command, colored terminal output -crossterm = "0.28.1" +crossterm = "0.29.0" # Convert binary hash into hex -data-encoding = "2.8.0" +data-encoding = "2.9.0" # Find the best place to sotre the VFS directories = "6.0.0" # Serialize app config into meta file in the ROM @@ -37,33 +37,34 @@ firefly-types = { version = "0.5.1" } # Decode wav files hound = "3.5.1" # Parse PNG images -image = { version = "0.25.5", default-features = false, features = ["png"] } +image = { version = "0.25.6", default-features = false, features = ["png"] } # Random device name generation rand = "0.8.5" # Signatures -rsa = { version = "0.9.7", default-features = false, features = [ +rsa = { version = "0.9.8", default-features = false, features = [ "std", "sha2", ] } -rust-embed = { version = "8.5.0", default-features = false, features = [ +rust-embed = { version = "8.7.1", default-features = false, features = [ "debug-embed", ] } # REPL rustyline = "15.0.0" # Deserialize firefly.toml (required by `toml`) -serde = { version = "1.0.217", features = ["serde_derive", "derive"] } -# Deserialize JSON API responses from the firefly catalog. -serde_json = "1.0.138" -serialport = "4.7.0" +serde = { version = "1.0.219", features = ["serde_derive", "derive"] } +# Deserialize JSON API responses from the firefly catalog +serde_json = "1.0.140" +# Communicating with running device +serialport = "4.7.1" # Calculate file checksum -sha2 = "0.10.8" +sha2 = "0.10.9" # Deserialize firefly.toml -toml = "0.8.20" +toml = "0.8.22" # Download remote files (`url` field in `firefly.toml`) ureq = "2.12.1" # Build together post-processed wasm binaries -wasm-encoder = "0.225.0" +wasm-encoder = "0.230.0" # Parse wasm binaries for post-processing (removing custom sections) -wasmparser = "0.225.0" +wasmparser = "0.230.0" # Work with zip archives (distribution format for ROMs) -zip = { version = "2.2.2", default-features = false, features = ["zstd"] } +zip = { version = "2.6.1", default-features = false, features = ["zstd"] } diff --git a/src/commands/badges.rs b/src/commands/badges.rs index ce28dc7..fbd2eaa 100644 --- a/src/commands/badges.rs +++ b/src/commands/badges.rs @@ -46,7 +46,7 @@ fn display_badges( continue; } print!("{}", "[hidden] ".grey()); - }; + } println!("#{id} {} ({} XP)", badge.name.cyan(), badge.xp); println!("{}", badge.descr); let emoji = if progress.earned() { diff --git a/src/commands/build.rs b/src/commands/build.rs index 6406bb9..c5e1e20 100644 --- a/src/commands/build.rs +++ b/src/commands/build.rs @@ -165,7 +165,7 @@ fn remove_old_files(root: &Path) -> anyhow::Result<()> { continue; } fs::remove_file(entry.path())?; - }; + } } Ok(()) } diff --git a/src/commands/cheat.rs b/src/commands/cheat.rs index ad44e07..e57ea30 100644 --- a/src/commands/cheat.rs +++ b/src/commands/cheat.rs @@ -38,7 +38,7 @@ pub fn cmd_cheat(args: &CheatArgs) -> Result<()> { fn parse_command(raw: &str, root: &Path) -> Result { if let Ok(n) = raw.parse::() { return Ok(n); - }; + } let config = Config::load(root.into(), root).context("load project config")?; let Some(cheats) = config.cheats else { bail!("firefly.toml doesn't have [cheats]") diff --git a/src/commands/inspect.rs b/src/commands/inspect.rs index 8ad63a0..d993b2c 100644 --- a/src/commands/inspect.rs +++ b/src/commands/inspect.rs @@ -133,7 +133,7 @@ fn inspect_images(rom_path: &Path) -> anyhow::Result> { let entry = entry?; if let Some(stat) = inspect_image(&entry.path()) { stats.push(stat); - }; + } } Ok(stats) } @@ -203,7 +203,7 @@ fn inspect_audios(rom_path: &Path) -> anyhow::Result> { let entry = entry?; if let Some(stat) = inspect_audio(&entry.path()) { stats.push(stat); - }; + } } Ok(stats) } diff --git a/src/commands/keys.rs b/src/commands/keys.rs index 98bae9a..ae7dc42 100644 --- a/src/commands/keys.rs +++ b/src/commands/keys.rs @@ -158,7 +158,7 @@ pub fn cmd_key_add(vfs: &Path, args: &KeyArgs) -> anyhow::Result<()> { /// Download the key from the given URL. fn download_key(url: &str) -> anyhow::Result<(String, Vec)> { - let file_name = url.split('/').last().unwrap(); + let file_name = url.split('/').next_back().unwrap(); let Some(author) = file_name.strip_suffix(".der") else { bail!("the key file must have .der extension") }; @@ -195,7 +195,7 @@ fn save_raw_key(vfs: &Path, author: &str, raw_key: &[u8]) -> anyhow::Result<()> } else { RsaPublicKey::from_pkcs1_der(raw_key).context("parse public key")?; fs::write(pub_path, raw_key).context("write public key")?; - }; + } Ok(()) } diff --git a/src/commands/logs.rs b/src/commands/logs.rs index e5f6d49..9b40590 100644 --- a/src/commands/logs.rs +++ b/src/commands/logs.rs @@ -33,7 +33,7 @@ pub fn cmd_logs(args: &LogsArgs) -> Result<()> { Ok(Response::Log(log)) => println!("{log}"), Ok(_) => (), Err(err) => println!("invalid message: {err}"), - }; + } } } } diff --git a/src/commands/monitor.rs b/src/commands/monitor.rs index 480cadf..029ffe0 100644 --- a/src/commands/monitor.rs +++ b/src/commands/monitor.rs @@ -151,7 +151,7 @@ fn request_device_stats(port: &mut Port, stats: &mut Stats) -> Result<()> { let buf = req.encode_vec().context("encode request")?; port.write_all(&buf[..]).context("send request")?; port.flush().context("flush request")?; - }; + } Ok(()) } @@ -179,7 +179,7 @@ fn parse_stats(stats: &mut Stats, buf: &[u8]) -> Result<()> { } } serial::Response::Memory(mem) => stats.mem = Some(mem), - }; + } Ok(()) } @@ -245,19 +245,19 @@ fn render_stats(stats: &Stats) -> Result<()> { execute!(io::stdout(), terminal::Clear(terminal::ClearType::All))?; if let Some(cpu) = &stats.cpu { render_cpu(cpu).context("render cpu table")?; - }; + } if let Some(fuel) = &stats.update { render_fuel(1, 7, "update", fuel).context("render fuel table")?; - }; + } if let Some(fuel) = &stats.render { render_fuel(24, 7, "render", fuel).context("render fuel table")?; - }; + } if let Some(memory) = &stats.mem { render_memory(memory).context("render memory table")?; - }; + } if let Some(log) = &stats.log { render_log(log).context("render logs")?; - }; + } Ok(()) } diff --git a/src/commands/new.rs b/src/commands/new.rs index cf5d258..928ce02 100644 --- a/src/commands/new.rs +++ b/src/commands/new.rs @@ -19,7 +19,7 @@ pub fn cmd_new(args: &NewArgs) -> Result<()> { let root = Path::new(&args.name); if root.exists() { bail!("the directory already exists"); - }; + } let lang = parse_lang(&args.lang)?; match lang { Lang::Go => new_go(&args.name).context("new Go project")?, @@ -38,15 +38,17 @@ pub fn cmd_new(args: &NewArgs) -> Result<()> { /// Create and dump firefly.toml config. fn write_config(name: &str) -> Result<()> { + use std::fmt::Write; + let root = Path::new(name); let config_path = root.join("firefly.toml"); let username = get_username().unwrap_or_else(|| "joearms".to_string()); let mut config = String::new(); - config.push_str(&format!("author_id = \"{username}\"\n")); - config.push_str(&format!("app_id = \"{name}\"\n")); - config.push_str(&format!("author_name = \"{}\"\n", to_titlecase(&username))); - config.push_str(&format!("app_name = \"{}\"\n", to_titlecase(name))); + _ = writeln!(config, "author_id = \"{username}\""); + _ = writeln!(config, "app_id = \"{name}\""); + _ = writeln!(config, "author_name = \"{}\"", to_titlecase(&username)); + _ = writeln!(config, "app_name = \"{}\"", to_titlecase(name)); std::fs::write(config_path, config).context("write config")?; Ok(()) diff --git a/src/langs.rs b/src/langs.rs index 58df383..a3a202a 100644 --- a/src/langs.rs +++ b/src/langs.rs @@ -180,11 +180,11 @@ fn find_rust_result(root: &Path) -> anyhow::Result { let release_dir = target_dir.join("wasm32-unknown-unknown").join("release"); if let Some(path) = find_wasm_binary(&release_dir)? { return Ok(path); - }; + } let examples_dir = release_dir.join("examples"); if let Some(path) = find_wasm_binary(&examples_dir)? { return Ok(path); - }; + } bail!("cannot find wasm binary") } @@ -246,7 +246,7 @@ fn build_cpp_inner(config: &Config, bin_name: &str, fname: &str) -> anyhow::Resu in_path = in_path_src; if !in_path.exists() { bail!("file {fname} not found"); - }; + } } let out_path = config.rom_path.join(BIN); let wasi_sysroot = wasi_sdk.join("share").join("wasi-sysroot"); @@ -372,6 +372,8 @@ pub fn check_output(output: &Output) -> anyhow::Result<()> { /// Run the given binary with the given arg and return an error if it is not installed. pub fn check_installed(lang: &str, bin: &str, arg: &str) -> anyhow::Result<()> { + use std::fmt::Write; + let output = Command::new(bin).args([arg]).output(); if let Ok(output) = output { if output.status.success() { @@ -380,9 +382,7 @@ pub fn check_installed(lang: &str, bin: &str, arg: &str) -> anyhow::Result<()> { } let mut msg = format!("You're trying to build a {lang} app but you don't have {bin} installed.\n"); - msg.push_str(&format!( - "Please, follow the getting started guide for {lang}:\n" - )); - msg.push_str(" https://docs.fireflyzero.com/dev/getting-started/"); + _ = writeln!(msg, "Please, follow the getting started guide for {lang}:"); + _ = write!(msg, " https://docs.fireflyzero.com/dev/getting-started/"); bail!(msg); } diff --git a/src/net.rs b/src/net.rs index 23c54c5..f24c6af 100644 --- a/src/net.rs +++ b/src/net.rs @@ -16,7 +16,7 @@ pub fn connect() -> Result { if maybe_stream.is_err() { sleep(Duration::from_secs(1)); maybe_stream = TcpStream::connect(&addrs[..]); - }; + } let stream = maybe_stream.context("connect to emulator")?; Ok(stream) }