diff --git a/Cargo.lock b/Cargo.lock index 58a12f1..817d750 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,6 +39,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -56,9 +62,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -86,40 +92,35 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] -name = "atty" -version = "0.2.14" +name = "atomic-waker" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" @@ -153,30 +154,35 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" -version = "1.3.3" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" dependencies = [ + "bincode_derive", "serde", + "unty", +] + +[[package]] +name = "bincode_derive" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" +dependencies = [ + "virtue", ] [[package]] name = "bitflags" -version = "1.3.2" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" [[package]] name = "bitvec" @@ -190,16 +196,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "block-padding", - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -209,12 +205,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "bumpalo" version = "3.19.0" @@ -229,9 +219,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.30" +version = "1.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" +checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f" dependencies = [ "shlex", ] @@ -242,6 +232,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.41" @@ -258,75 +254,36 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.25" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive 3.2.25", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "once_cell", - "strsim 0.10.0", - "termcolor", - "textwrap", -] - -[[package]] -name = "clap" -version = "4.5.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9" +checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" dependencies = [ "clap_builder", - "clap_derive 4.5.41", + "clap_derive", ] [[package]] name = "clap_builder" -version = "4.5.41" +version = "4.5.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d" +checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.5", - "strsim 0.11.1", + "clap_lex", + "strsim", ] [[package]] name = "clap_derive" -version = "3.2.25" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" dependencies = [ - "heck 0.4.1", - "proc-macro-error", + "heck", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_derive" -version = "4.5.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.104", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "syn 2.0.106", ] [[package]] @@ -448,43 +405,35 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "crypto-common", ] [[package]] name = "dirs" -version = "4.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.60.2", ] [[package]] @@ -495,7 +444,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -531,6 +480,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "env_home" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" + [[package]] name = "equivalent" version = "1.0.2" @@ -566,9 +521,9 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fixedbitset" -version = "0.4.2" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" @@ -586,6 +541,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -652,6 +613,17 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -672,6 +644,7 @@ checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-io", + "futures-macro", "futures-sink", "futures-task", "memchr", @@ -697,8 +670,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -708,9 +683,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -721,17 +698,17 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "h2" -version = "0.3.27" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", - "indexmap 2.10.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -744,12 +721,6 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -758,15 +729,14 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "heck" @@ -774,29 +744,11 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[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.12" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -805,12 +757,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", "pin-project-lite", ] @@ -820,61 +784,85 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "hyper" -version = "0.14.32" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", "futures-core", - "futures-util", "h2", "http", "http-body", "httparse", - "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.10", + "pin-utils", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", + "hyper-util", "rustls", + "rustls-pki-types", "tokio", "tokio-rustls", + "tower-service", + "webpki-roots", ] [[package]] name = "hyper-tls" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", + "http-body-util", "hyper", + "hyper-util", "native-tls", "tokio", "tokio-native-tls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2 0.6.0", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", ] [[package]] @@ -1008,16 +996,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.10.0" @@ -1025,7 +1003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -1034,7 +1012,7 @@ version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cfg-if", "libc", ] @@ -1045,6 +1023,16 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "is_ci" version = "1.2.0" @@ -1059,9 +1047,9 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] @@ -1099,9 +1087,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libips" @@ -1112,9 +1100,9 @@ dependencies = [ "diff-struct", "flate2", "lz4", - "maplit 0.1.6", + "maplit", "miette", - "object 0.23.0", + "object 0.37.3", "pest", "pest_derive", "redb", @@ -1126,31 +1114,25 @@ dependencies = [ "serde", "serde_cbor", "serde_json", - "sha2 0.9.9", + "sha2", "sha3", "strum", "tempfile", - "thiserror 1.0.69", + "thiserror", "tracing", "walkdir", ] [[package]] name = "libredox" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4488594b9328dee448adb906d8b126d9b7deb7cf5c22161ee591610bb1be83c0" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.1", + "bitflags", "libc", ] -[[package]] -name = "linux-raw-sys" -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" @@ -1169,6 +1151,12 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lz4" version = "1.28.1" @@ -1188,12 +1176,6 @@ dependencies = [ "libc", ] -[[package]] -name = "maplit" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22593015b8df7747861c69c28acd32589fb96c1686369f3b661d12e409d4cf65" - [[package]] name = "maplit" version = "1.0.2" @@ -1242,7 +1224,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1371,16 +1353,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "object" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" -dependencies = [ - "flate2", - "wasmparser", -] - [[package]] name = "object" version = "0.36.7" @@ -1390,6 +1362,17 @@ dependencies = [ "memchr", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "flate2", + "memchr", + "ruzstd", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -1402,19 +1385,13 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl" version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", + "bitflags", "cfg-if", "foreign-types", "libc", @@ -1431,7 +1408,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1440,15 +1417,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-src" -version = "300.5.1+3.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "735230c832b28c000e3bc117119e6466a663ec73506bc0a9907ea4187508e42a" -dependencies = [ - "cc", -] - [[package]] name = "openssl-sys" version = "0.9.109" @@ -1457,11 +1425,16 @@ checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", - "openssl-src", "pkg-config", "vcpkg", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-multimap" version = "0.7.3" @@ -1472,12 +1445,6 @@ dependencies = [ "hashbrown 0.14.5", ] -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - [[package]] name = "overload" version = "0.1.1" @@ -1509,7 +1476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror", "ucd-trie", ] @@ -1533,7 +1500,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -1543,17 +1510,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ "pest", - "sha2 0.10.9", + "sha2", ] [[package]] name = "petgraph" -version = "0.6.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "hashbrown 0.15.5", + "indexmap", + "serde", ] [[package]] @@ -1578,12 +1547,12 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" name = "pkg6" version = "0.5.1" dependencies = [ - "clap 4.5.41", + "clap", "libips", "miette", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror", "tracing", "tracing-subscriber", ] @@ -1597,10 +1566,10 @@ name = "pkg6dev" version = "0.5.1" dependencies = [ "anyhow", - "clap 4.5.41", + "clap", "libips", "miette", - "thiserror 2.0.12", + "thiserror", "tracing", "tracing-subscriber", "userland", @@ -1610,14 +1579,14 @@ dependencies = [ name = "pkg6repo" version = "0.5.1" dependencies = [ - "clap 4.5.41", + "clap", "flate2", "libips", "miette", "serde", "serde_json", "tempfile", - "thiserror 2.0.12", + "thiserror", "tracing", "tracing-subscriber", ] @@ -1627,12 +1596,12 @@ name = "ports" version = "0.5.1" dependencies = [ "anyhow", - "clap 3.2.25", + "clap", "libips", "reqwest", "shellexpand", "specfile", - "thiserror 2.0.12", + "thiserror", "url", "which", ] @@ -1647,38 +1616,78 @@ dependencies = [ ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "ppv-lite86" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", + "zerocopy", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] +[[package]] +name = "quinn" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2 0.5.10", + "thiserror", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.5.10", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.40" @@ -1701,23 +1710,52 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] -name = "redb" -version = "1.5.1" +name = "rand" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7f82ecd6ba647a39dd1a7172b8a1cd9453c0adee6da20cb553d83a9a460fa5" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", +] + +[[package]] +name = "redb" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225e8bf881033e020ed87e9f10fc6254cf3ebab8d440e6fbb4c7b34bec2a0543" dependencies = [ "libc", ] [[package]] name = "redox_users" -version = "0.4.6" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -1766,59 +1804,62 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-rustls", "hyper-tls", - "ipnet", + "hyper-util", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", + "quinn", "rustls", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots", - "winreg", ] [[package]] name = "resolvo" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014783b06e2d02bee01fe3c3247454fb34d0fc35765334e825034cdadec422fa" +checksum = "670175f9a825ad2419bea0e14bfe74e5dcc0227ec7a652a655b1c11e2b911754" dependencies = [ "ahash", "bitvec", "elsa", "event-listener", "futures", + "indexmap", "itertools", "petgraph", "tracing", @@ -1840,32 +1881,26 @@ dependencies = [ [[package]] name = "rust-ini" -version = "0.21.2" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791" +checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" dependencies = [ "cfg-if", "ordered-multimap", + "trim-in-place", ] [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] -name = "rustix" -version = "0.38.44" +name = "rustc-hash" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.1", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" @@ -1873,49 +1908,62 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags", "errno", "libc", - "linux-raw-sys 0.9.4", + "linux-raw-sys", "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.21.12" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ - "log", + "once_cell", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] -name = "rustls-pemfile" -version = "1.0.4" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "base64", + "web-time", + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ruzstd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3640bec8aad418d7d03c72ea2de10d5c646a598f9883c7babc160d91e3c1b26c" +dependencies = [ + "twox-hash", +] [[package]] name = "ryu" @@ -1941,23 +1989,13 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "security-framework" version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -2010,14 +2048,14 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.141" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -2037,19 +2075,6 @@ dependencies = [ "serde", ] -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha2" version = "0.10.9" @@ -2058,19 +2083,17 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] name = "sha3" -version = "0.9.1" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", + "digest", "keccak", - "opaque-debug", ] [[package]] @@ -2084,9 +2107,9 @@ dependencies = [ [[package]] name = "shellexpand" -version = "2.1.2" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" +checksum = "8b1fdf65dd6331831494dd616b30351c38e96e45921a27745cf98490458b90bb" dependencies = [ "dirs", ] @@ -2099,9 +2122,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -2136,7 +2159,7 @@ dependencies = [ "anyhow", "pest", "pest_derive", - "thiserror 2.0.12", + "thiserror", ] [[package]] @@ -2145,12 +2168,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "strsim" version = "0.11.1" @@ -2159,26 +2176,31 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.24.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.24.3" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "rustversion", - "syn 1.0.109", + "syn 2.0.106", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "supports-color" version = "3.0.2" @@ -2213,9 +2235,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -2224,9 +2246,12 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -2236,25 +2261,25 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -2275,27 +2300,18 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.8", + "rustix", "windows-sys 0.59.0", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ - "rustix 1.0.8", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.60.2", ] [[package]] @@ -2310,42 +2326,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.69" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +checksum = "80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850" dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" -dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.69" +version = "2.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2377,10 +2373,25 @@ dependencies = [ ] [[package]] -name = "tokio" -version = "1.47.0" +name = "tinyvec" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.47.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", @@ -2405,9 +2416,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", @@ -2415,9 +2426,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -2426,6 +2437,45 @@ dependencies = [ "tokio", ] +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -2451,7 +2501,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2493,12 +2543,24 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "trim-in-place" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "twox-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56" + [[package]] name = "typenum" version = "1.18.0" @@ -2541,6 +2603,12 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +[[package]] +name = "unty" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" + [[package]] name = "url" version = "2.5.4" @@ -2559,16 +2627,13 @@ version = "0.5.1" dependencies = [ "anyhow", "lazy_static", - "maplit 1.0.2", - "openssl", "pest", "pest_derive", "regex", "reqwest", "semver", "serde", - "serde_json", - "thiserror 1.0.69", + "thiserror", "url", ] @@ -2602,6 +2667,12 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "virtue" +version = "0.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" + [[package]] name = "walkdir" version = "2.5.0" @@ -2658,7 +2729,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "wasm-bindgen-shared", ] @@ -2693,7 +2764,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2707,12 +2778,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "wasmparser" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" - [[package]] name = "web-sys" version = "0.3.77" @@ -2724,21 +2789,33 @@ dependencies = [ ] [[package]] -name = "webpki-roots" -version = "0.25.4" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "which" -version = "4.4.2" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", + "env_home", + "rustix", + "winsafe", ] [[package]] @@ -2793,7 +2870,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2804,7 +2881,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -2813,6 +2890,17 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.3.4" @@ -2831,15 +2919,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -2864,22 +2943,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "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", + "windows-targets 0.53.3", ] [[package]] @@ -2900,10 +2964,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -2914,12 +2979,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -2932,12 +2991,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -2950,12 +3003,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -2980,12 +3027,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -2998,12 +3039,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -3016,12 +3051,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -3034,12 +3063,6 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -3053,14 +3076,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] -name = "winreg" -version = "0.50.0" +name = "winsafe" +version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] +checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wit-bindgen-rt" @@ -3068,7 +3087,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.1", + "bitflags", ] [[package]] @@ -3091,7 +3110,7 @@ name = "xtask" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.5.41", + "clap", ] [[package]] @@ -3114,7 +3133,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "synstructure", ] @@ -3135,7 +3154,7 @@ checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] [[package]] @@ -3155,10 +3174,16 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zerotrie" version = "0.2.2" @@ -3172,9 +3197,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -3189,5 +3214,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.106", ] diff --git a/libips/Cargo.toml b/libips/Cargo.toml index ea6d145..61897b9 100644 --- a/libips/Cargo.toml +++ b/libips/Cargo.toml @@ -17,16 +17,16 @@ keywords.workspace = true [dependencies] regex = "1.5.5" -thiserror = "1.0.50" +thiserror = "2" miette = "7.6.0" tracing = "0.1.37" -maplit = "0.1.6" -object = "0.23.0" -sha2 = "0.9.3" -sha3 = "0.9.1" +maplit = "1" +object = "0.37" +sha2 = "0.10" +sha3 = "0.10" pest = "2.1.3" pest_derive = "2.1.0" -strum = { version = "0.24.1", features = ["derive"] } +strum = { version = "0.27", features = ["derive"] } serde = { version = "1.0.207", features = ["derive"] } serde_json = "1.0.124" serde_cbor = "0.11.2" @@ -37,11 +37,11 @@ diff-struct = "0.5.3" chrono = "0.4.41" tempfile = "3.20.0" walkdir = "2.4.0" -redb = "1.5.0" -bincode = "1.3.3" -rust-ini = "0.21.2" -reqwest = { version = "0.11", features = ["blocking", "json"] } -resolvo = "0.7" +redb = "3" +bincode = { version = "2", features = ["serde"] } +rust-ini = "0.21" +reqwest = { version = "0.12", features = ["blocking", "json"] } +resolvo = "0.10" [features] default = ["redb-index"] diff --git a/libips/src/digest/mod.rs b/libips/src/digest/mod.rs index 4154058..cf8c4bb 100644 --- a/libips/src/digest/mod.rs +++ b/libips/src/digest/mod.rs @@ -115,7 +115,7 @@ impl Digest { format!("{:x}", sha2::Sha256::digest(b)) } DigestAlgorithm::SHA512Half => { - format!("{:x}", sha2::Sha512Trunc256::digest(b)) + format!("{:x}", sha2::Sha512_256::digest(b)) } DigestAlgorithm::SHA512 => { format!("{:x}", sha2::Sha512::digest(b)) diff --git a/libips/src/image/catalog.rs b/libips/src/image/catalog.rs index a923f45..8c36b61 100644 --- a/libips/src/image/catalog.rs +++ b/libips/src/image/catalog.rs @@ -2,7 +2,7 @@ use crate::actions::{Manifest}; use crate::fmri::Fmri; use crate::repository::catalog::{CatalogManager, CatalogPart, PackageVersionEntry}; use miette::Diagnostic; -use redb::{Database, ReadableTable, TableDefinition}; +use redb::{Database, ReadableDatabase, ReadableTable, TableDefinition}; use serde::{Deserialize, Serialize}; use std::fs; use std::path::{Path, PathBuf}; @@ -19,6 +19,11 @@ pub const CATALOG_TABLE: TableDefinition<&str, &[u8]> = TableDefinition::new("ca /// Value: nothing pub const OBSOLETED_TABLE: TableDefinition<&str, &[u8]> = TableDefinition::new("obsoleted"); +/// Table definition for the incorporate locks table +/// Key: stem (e.g., "compress/gzip") +/// Value: version string as bytes (same format as Fmri::version()) +pub const INCORPORATE_TABLE: TableDefinition<&str, &[u8]> = TableDefinition::new("incorporate"); + /// Table definition for the installed packages database /// Key: full FMRI including publisher (pkg://publisher/stem@version) /// Value: serialized Manifest @@ -105,6 +110,17 @@ impl ImageCatalog { "catalog" => self.dump_catalog_table(&tx)?, "obsoleted" => self.dump_obsoleted_table(&tx)?, "installed" => self.dump_installed_table(&tx)?, + "incorporate" => { + // Simple dump of incorporate locks + if let Ok(table) = tx.open_table(INCORPORATE_TABLE) { + for entry in table.iter().map_err(|e| CatalogError::Database(format!("Failed to iterate incorporate table: {}", e)))? { + let (k, v) = entry.map_err(|e| CatalogError::Database(format!("Failed to read incorporate table entry: {}", e)))?; + let stem = k.value(); + let ver = String::from_utf8_lossy(v.value()); + println!("{} -> {}", stem, ver); + } + } + } _ => return Err(CatalogError::Database(format!("Unknown table: {}", table_name))), } @@ -311,6 +327,9 @@ impl ImageCatalog { tx.open_table(OBSOLETED_TABLE) .map_err(|e| CatalogError::Database(format!("Failed to create obsoleted table: {}", e)))?; + tx.open_table(INCORPORATE_TABLE) + .map_err(|e| CatalogError::Database(format!("Failed to create incorporate table: {}", e)))?; + tx.commit() .map_err(|e| CatalogError::Database(format!("Failed to commit transaction: {}", e)))?; diff --git a/libips/src/image/installed.rs b/libips/src/image/installed.rs index 2712fd1..cab432d 100644 --- a/libips/src/image/installed.rs +++ b/libips/src/image/installed.rs @@ -1,7 +1,7 @@ use crate::actions::Manifest; use crate::fmri::Fmri; use miette::Diagnostic; -use redb::{Database, ReadableTable, TableDefinition}; +use redb::{Database, ReadableDatabase, ReadableTable, TableDefinition}; use serde::{Deserialize, Serialize}; use std::fs; use std::path::{Path, PathBuf}; diff --git a/libips/src/image/mod.rs b/libips/src/image/mod.rs index c628d49..81f6e2f 100644 --- a/libips/src/image/mod.rs +++ b/libips/src/image/mod.rs @@ -9,12 +9,13 @@ use std::collections::HashMap; use std::fs::{self, File}; use std::path::{Path, PathBuf}; use thiserror::Error; +use redb::{Database, ReadableDatabase, ReadableTable}; use crate::repository::{ReadableRepository, RepositoryError, RestBackend, FileBackend}; // Export the catalog module pub mod catalog; -use catalog::{ImageCatalog, PackageInfo}; +use catalog::{ImageCatalog, PackageInfo, INCORPORATE_TABLE}; // Export the installed packages module pub mod installed; @@ -338,10 +339,41 @@ impl Image { /// Add a package to the installed packages database pub fn install_package(&self, fmri: &crate::fmri::Fmri, manifest: &crate::actions::Manifest) -> Result<()> { + // Precheck incorporation dependencies: fail if any stem already has a lock + for d in &manifest.dependencies { + if d.dependency_type == "incorporate" { + if let Some(df) = &d.fmri { + let stem = df.stem(); + if let Some(_) = self.get_incorporated_release(stem)? { + return Err(ImageError::Database(format!( + "Incorporation lock already exists for stem {}", stem + ))); + } + } + } + } + + // Add to installed database let installed = InstalledPackages::new(self.installed_db_path()); installed.add_package(fmri, manifest).map_err(|e| { ImageError::Database(format!("Failed to add package to installed database: {}", e)) - }) + })?; + + // Write incorporation locks for any incorporate dependencies + for d in &manifest.dependencies { + if d.dependency_type == "incorporate" { + if let Some(df) = &d.fmri { + let stem = df.stem(); + let ver = df.version(); + if !ver.is_empty() { + // Store the full version string (release[,branch][-build][:timestamp]) + // Ignore errors here? Better to propagate to ensure consistency + self.add_incorporation_lock(stem, &ver)?; + } + } + } + } + Ok(()) } /// Remove a package from the installed packages database @@ -555,6 +587,47 @@ impl Image { ImageError::Database(format!("Failed to query catalog: {}", e)) }) } + + /// Look up an incorporation lock for a given stem. + /// Returns Some(release) if a lock exists, otherwise None. + pub fn get_incorporated_release(&self, stem: &str) -> Result> { + let db = Database::open(self.catalog_db_path()) + .map_err(|e| ImageError::Database(format!("Failed to open catalog database: {}", e)))?; + let tx = db.begin_read() + .map_err(|e| ImageError::Database(format!("Failed to begin read transaction: {}", e)))?; + match tx.open_table(INCORPORATE_TABLE) { + Ok(table) => { + match table.get(stem) { + Ok(Some(val)) => Ok(Some(String::from_utf8_lossy(val.value()).to_string())), + Ok(None) => Ok(None), + Err(e) => Err(ImageError::Database(format!("Failed to read incorporate lock: {}", e))), + } + } + Err(_) => Ok(None), + } + } + + /// Add an incorporation lock for a stem to a specific release. + /// Fails if a lock already exists for the stem. + pub fn add_incorporation_lock(&self, stem: &str, release: &str) -> Result<()> { + let db = Database::open(self.catalog_db_path()) + .map_err(|e| ImageError::Database(format!("Failed to open catalog database: {}", e)))?; + let tx = db.begin_write() + .map_err(|e| ImageError::Database(format!("Failed to begin write transaction: {}", e)))?; + { + let mut table = tx.open_table(INCORPORATE_TABLE) + .map_err(|e| ImageError::Database(format!("Failed to open incorporate table: {}", e)))?; + if let Ok(Some(_)) = table.get(stem) { + return Err(ImageError::Database(format!("Incorporation lock already exists for stem {}", stem))); + } + table.insert(stem, release.as_bytes()) + .map_err(|e| ImageError::Database(format!("Failed to insert incorporate lock: {}", e)))?; + } + tx.commit() + .map_err(|e| ImageError::Database(format!("Failed to commit incorporate lock: {}", e)))? + ; + Ok(()) + } /// Get a manifest from the catalog pub fn get_manifest_from_catalog(&self, fmri: &crate::fmri::Fmri) -> Result> { diff --git a/libips/src/repository/mod.rs b/libips/src/repository/mod.rs index e708042..3b74153 100644 --- a/libips/src/repository/mod.rs +++ b/libips/src/repository/mod.rs @@ -192,12 +192,17 @@ impl From for RepositoryError { } } -impl From for RepositoryError { - fn from(err: bincode::Error) -> Self { +impl From for RepositoryError { + fn from(err: bincode::error::DecodeError) -> Self { RepositoryError::Other(format!("Serialization error: {}", err)) } } +impl From for RepositoryError { + fn from(err: bincode::error::EncodeError) -> Self { + RepositoryError::Other(format!("Serialization error: {}", err)) + } +} pub mod catalog; mod file_backend; mod obsoleted; diff --git a/libips/src/repository/obsoleted.rs b/libips/src/repository/obsoleted.rs index 77b9add..f57b2c5 100644 --- a/libips/src/repository/obsoleted.rs +++ b/libips/src/repository/obsoleted.rs @@ -3,7 +3,7 @@ use crate::repository::{Result, RepositoryError}; use chrono::{DateTime, Duration as ChronoDuration, Utc}; use miette::Diagnostic; use regex::Regex; -use redb::{Database, ReadableTable, TableDefinition}; +use redb::{Database, ReadableDatabase, ReadableTable, TableDefinition}; use serde::{Deserialize, Serialize}; use serde_json; use serde_cbor; @@ -212,8 +212,14 @@ impl From for ObsoletedPackageError { } } -impl From for ObsoletedPackageError { - fn from(err: bincode::Error) -> Self { +impl From for ObsoletedPackageError { + fn from(err: bincode::error::EncodeError) -> Self { + ObsoletedPackageError::SerializationError(err.to_string()) + } +} + +impl From for ObsoletedPackageError { + fn from(err: bincode::error::DecodeError) -> Self { ObsoletedPackageError::SerializationError(err.to_string()) } } @@ -792,7 +798,7 @@ impl RedbObsoletedPackageIndex { /// Clear the index fn clear(&self) -> Result<()> { - // Begin a write transaction + // Begin a writing transaction let write_txn = self.db.begin_write()?; { // Clear all tables by removing all entries @@ -802,7 +808,7 @@ impl RedbObsoletedPackageIndex { { let mut hash_to_manifest = write_txn.open_table(FMRI_TO_METADATA_TABLE)?; let keys_to_remove = { - // First collect all keys in a separate scope + // First, collect all keys in a separate scope let read_txn = self.db.begin_read()?; let hash_to_manifest_read = read_txn.open_table(FMRI_TO_METADATA_TABLE)?; let mut keys = Vec::new(); @@ -824,7 +830,7 @@ impl RedbObsoletedPackageIndex { { let mut hash_to_manifest = write_txn.open_table(HASH_TO_MANIFEST_TABLE)?; let keys_to_remove = { - // First collect all keys in a separate scope + // First, collect all keys in a separate scope let read_txn = self.db.begin_read()?; let hash_to_manifest_read = read_txn.open_table(HASH_TO_MANIFEST_TABLE)?; let mut keys = Vec::new(); @@ -884,7 +890,7 @@ impl RedbObsoletedPackageIndex { /// Constant for null hash value, indicating no manifest content is stored -/// When this value is used for content_hash, the original manifest is not stored +/// When this value is used for content_hash, the original manifest is not stored, /// and a minimal manifest with obsoletion attributes is generated on-the-fly when requested pub const NULL_HASH: &str = "null"; @@ -1325,7 +1331,7 @@ impl ObsoletedPackageManager { /// * `obsoleted_by` - Optional list of FMRIs that replace this package /// * `deprecation_message` - Optional message explaining why the package was obsoleted /// * `store_manifest` - Whether to store the original manifest content - /// If false, a null hash is used and no manifest file is stored + /// If false, a null hash is used, and no manifest file is stored /// /// # Returns /// @@ -1365,7 +1371,7 @@ impl ObsoletedPackageManager { ) }; - // Construct path for the obsoleted package + // Construct a path for the obsoleted package let stem = fmri.stem(); let version = fmri.version(); let pkg_dir = publisher_dir.join(stem); @@ -1375,7 +1381,7 @@ impl ObsoletedPackageManager { let encoded_version = url_encode(&version); let metadata_path = pkg_dir.join(format!("{}.json", encoded_version)); - // Write metadata to file + // Write metadata to a file let metadata_json = serde_json::to_string_pretty(&metadata)?; fs::write(&metadata_path, metadata_json)?; @@ -1401,7 +1407,7 @@ impl ObsoletedPackageManager { /// Check if a package is obsoleted pub fn is_obsoleted(&self, publisher: &str, fmri: &Fmri) -> bool { - // First check the filesystem directly for faster results in tests + // First, check the filesystem directly for faster results in tests let stem = fmri.stem(); let version = fmri.version(); let encoded_version = url_encode(&version); @@ -1478,7 +1484,7 @@ impl ObsoletedPackageManager { }, Err(e) => { warn!("Failed to get entry from index: {}", e); - // Fall back to the filesystem check if there's an error + // Fall back to the filesystem to check if there's an error self.get_obsoleted_package_metadata_from_filesystem(publisher, fmri) } } @@ -1583,7 +1589,7 @@ impl ObsoletedPackageManager { }, Err(e) => { warn!("Failed to get entry from index: {}", e); - // Fall back to the filesystem check if there's an error + // Fall back to the filesystem to check if there's an error self.get_obsoleted_package_manifest_from_filesystem(publisher, fmri) } } @@ -1672,7 +1678,7 @@ impl ObsoletedPackageManager { /// Get manifest content and remove an obsoleted package /// /// This method retrieves the manifest content of an obsoleted package and removes it - /// from the obsoleted packages directory. It's used as part of the process to restore + /// from the obsoleted packages' directory. It's used as part of the process to restore /// an obsoleted package to the main repository. /// /// # Arguments @@ -1710,7 +1716,7 @@ impl ObsoletedPackageManager { /// Remove an obsoleted package /// - /// This method removes an obsoleted package from the obsoleted packages directory. + /// This method removes an obsoleted package from the obsoleted packages' directory. /// It can be used after restoring a package to the main repository. /// /// # Arguments @@ -1814,7 +1820,7 @@ impl ObsoletedPackageManager { warn!("Failed to acquire write lock on index, package not removed from index: {}: {}", fmri, e); // If we can't get a write lock, mark the index as dirty so it will be rebuilt next time if let Ok(index) = self.index.write() { - // This is a new write attempt, so it might succeed even if the previous one failed + // This is a new writing attempt, so it might succeed even if the previous one failed if let Err(e) = index.clear() { warn!("Failed to clear index: {}", e); } @@ -2017,7 +2023,7 @@ impl ObsoletedPackageManager { // Get packages for the requested page let packages = if start_idx >= total_count { - // If start index is beyond the total count, return an empty page + // If the start index is beyond the total count, return an empty page Vec::new() } else { all_packages[start_idx..end_idx.min(total_count)].to_vec() @@ -2475,7 +2481,7 @@ impl ObsoletedPackageManager { /// Batch process multiple obsoleted packages /// - /// This method applies a function to multiple obsoleted packages in batch. + /// This method applies a function to multiple obsoleted packages in a batch. /// It's useful for operations that need to be performed on many packages at once. /// /// # Arguments @@ -2636,7 +2642,7 @@ mod tests { let results = manager.search_obsoleted_packages("test", "package-.*").unwrap(); assert_eq!(results.len(), 2); - // Test search for specific version + // Test search for a specific version let results = manager.search_obsoleted_packages("test", "2.0").unwrap(); assert_eq!(results.len(), 1); assert_eq!(results[0].to_string(), fmri2.to_string()); @@ -2688,7 +2694,7 @@ mod tests { assert_eq!(page2.page, 2); let page4 = manager.list_obsoleted_packages_paginated("test", Some(4), Some(3)).unwrap(); - assert_eq!(page4.packages.len(), 1); // Last page has only 1 item + assert_eq!(page4.packages.len(), 1); // The last page has only 1 item // Test pagination with page beyond total let empty_page = manager.list_obsoleted_packages_paginated("test", Some(5), Some(3)).unwrap(); diff --git a/libips/src/solver/mod.rs b/libips/src/solver/mod.rs index 6e45653..2cd5488 100644 --- a/libips/src/solver/mod.rs +++ b/libips/src/solver/mod.rs @@ -17,11 +17,11 @@ use std::cell::RefCell; use std::collections::{BTreeMap, HashMap}; - +use std::fmt::Display; use miette::Diagnostic; // Begin resolvo wiring imports (names discovered by compiler) // We start broad and refine with compiler guidance. -use resolvo::{self, Candidates, Dependencies as RDependencies, DependencyProvider, Interner, KnownDependencies, Mapping, NameId, Problem as RProblem, Requirement as RRequirement, SolvableId, Solver as RSolver, SolverCache, StringId, UnsolvableOrCancelled, VersionSetId, VersionSetUnionId}; +use resolvo::{self, Candidates, Condition, ConditionId, ConditionalRequirement, Dependencies as RDependencies, DependencyProvider, HintDependenciesAvailable, Interner, KnownDependencies, Mapping, NameId, Problem as RProblem, Requirement as RRequirement, SolvableId, Solver as RSolver, SolverCache, StringId, UnsolvableOrCancelled, VersionSetId, VersionSetUnionId}; use thiserror::Error; use crate::actions::Manifest; @@ -138,6 +138,14 @@ impl<'a> Interner for IpsProvider<'a> { fmri.to_string() } + fn display_solvable_name(&self, solvable: SolvableId) -> impl Display + '_ { + todo!() + } + + fn display_merged_solvables(&self, solvables: &[SolvableId]) -> impl Display + '_ { + todo!() + } + fn display_name(&self, name: NameId) -> impl std::fmt::Display + '_ { self.names.get(name).cloned().unwrap_or_default() } @@ -176,6 +184,10 @@ impl<'a> Interner for IpsProvider<'a> { .unwrap_or_default() .into_iter() } + + fn resolve_condition(&self, condition: ConditionId) -> Condition { + todo!() + } } // Helper to evaluate if a candidate FMRI matches a VersionSetKind constraint @@ -248,11 +260,50 @@ impl<'a> DependencyProvider for IpsProvider<'a> { async fn get_candidates(&self, name: NameId) -> Option { let list = self.cands_by_name.get(&name)?; + // Check if an incorporation lock exists for this stem; if so, restrict candidates + let stem = self.display_name(name).to_string(); + if let Ok(Some(locked_ver)) = self.image.get_incorporated_release(&stem) { + // Parse the locked version; if parsed, match by release/branch/build and optionally timestamp. + let parsed_lock = crate::fmri::Version::parse(&locked_ver).ok(); + let locked_cands: Vec = list + .iter() + .copied() + .filter(|sid| { + let fmri = &self.solvables.get(*sid).unwrap().fmri; + if let Some(cv) = fmri.version.as_ref() { + if let Some(lv) = parsed_lock.as_ref() { + // Match release/branch/build exactly; timestamp must match only if lock includes it + if cv.release != lv.release { return false; } + if cv.branch != lv.branch { return false; } + if cv.build != lv.build { return false; } + if lv.timestamp.is_some() { + return cv.timestamp == lv.timestamp; + } + true + } else { + // Fallback: compare stringified version + fmri.version() == locked_ver + } + } else { + false + } + }) + .collect(); + if !locked_cands.is_empty() { + return Some(Candidates { + candidates: locked_cands, + favored: None, + locked: None, + hint_dependencies_available: HintDependenciesAvailable::None, + excluded: vec![], + }); + } + } Some(Candidates { candidates: list.clone(), favored: None, locked: None, - hint_dependencies_available: vec![], + hint_dependencies_available: HintDependenciesAvailable::None, excluded: vec![], }) } @@ -302,7 +353,7 @@ impl<'a> DependencyProvider for IpsProvider<'a> { }; // Build requirements for "require" deps - let mut reqs: Vec = Vec::new(); + let mut reqs: Vec = Vec::new(); let parent_branch = fmri .version .as_ref() @@ -327,7 +378,7 @@ impl<'a> DependencyProvider for IpsProvider<'a> { (None, None) => VersionSetKind::Any, }; let vs_id = self.version_set_for(child_name_id, vs_kind); - reqs.push(RRequirement::from(vs_id)); + reqs.push(ConditionalRequirement::from(vs_id)); // Set publisher preferences for the child to parent-first, then image order let order = build_publisher_preference(parent_pub, self.image); @@ -486,6 +537,7 @@ pub fn resolve_install(image: &Image, constraints: &[Constraint]) -> Result = Vec::new(); + let mut reqs: Vec = Vec::new(); for c in constraints.iter().cloned() { // Intern name let name_id = provider.intern_name(&c.stem); @@ -512,8 +564,9 @@ pub fn resolve_install(image: &Image, constraints: &[Constraint]) -> Result VersionSetKind::Any, }; let vs_id = provider.version_set_for(name_id, vs_kind); - problem.requirements.push(RRequirement::from(vs_id)); + reqs.push(ConditionalRequirement::from(vs_id)); } + let problem = problem.requirements(reqs); // Early diagnostic: detect roots with zero candidates before invoking solver let mut missing: Vec = Vec::new(); @@ -963,6 +1016,81 @@ mod solver_error_message_tests { } +#[cfg(test)] +mod incorporate_lock_tests { + use super::*; + use crate::fmri::Version; + use crate::image::ImageType; + use crate::image::catalog::CATALOG_TABLE; + use redb::Database; + use tempfile::tempdir; + + fn mk_version(release: &str, branch: Option<&str>, timestamp: Option<&str>) -> Version { + let mut v = Version::new(release); + if let Some(b) = branch { v.branch = Some(b.to_string()); } + if let Some(t) = timestamp { v.timestamp = Some(t.to_string()); } + v + } + + fn mk_fmri(publisher: &str, name: &str, v: Version) -> Fmri { Fmri::with_publisher(publisher, name, Some(v)) } + + fn write_manifest_to_catalog(image: &Image, fmri: &Fmri, manifest: &Manifest) { + let db = Database::open(image.catalog_db_path()).expect("open catalog db"); + let tx = db.begin_write().expect("begin write"); + { + let mut table = tx.open_table(CATALOG_TABLE).expect("open catalog table"); + let key = format!("{}@{}", fmri.stem(), fmri.version()); + let val = serde_json::to_vec(manifest).expect("serialize manifest"); + table.insert(key.as_str(), val.as_slice()).expect("insert manifest"); + } + tx.commit().expect("commit"); + } + + fn make_image_with_publishers(pubs: &[(&str, bool)]) -> Image { + let td = tempdir().expect("tempdir"); + let path = td.keep(); + let mut img = Image::create_image(&path, ImageType::Partial).expect("create image"); + for (name, is_default) in pubs.iter().copied() { + img.add_publisher(name, &format!("https://example.com/{name}"), vec![], is_default) + .expect("add publisher"); + } + img + } + + #[test] + fn incorporate_lock_enforced() { + let img = make_image_with_publishers(&[("pubA", true)]); + // Two versions of same stem in catalog + let v_old = mk_fmri("pubA", "compress/gzip", mk_version("1.0.0", None, Some("20200101T000000Z"))); + let v_new = mk_fmri("pubA", "compress/gzip", mk_version("2.0.0", None, Some("20200201T000000Z"))); + write_manifest_to_catalog(&img, &v_old, &Manifest::new()); + write_manifest_to_catalog(&img, &v_new, &Manifest::new()); + + // Add incorporation lock to old version + img.add_incorporation_lock("compress/gzip", &v_old.version()).expect("add lock"); + + // Resolve without version constraints should pick locked version + let c = Constraint { stem: "compress/gzip".to_string(), version_req: None, preferred_publishers: vec![], branch: None }; + let plan = resolve_install(&img, &[c]).expect("resolve"); + assert_eq!(plan.add.len(), 1); + assert_eq!(plan.add[0].fmri.version(), v_old.version()); + } + + #[test] + fn incorporate_lock_ignored_if_missing() { + let img = make_image_with_publishers(&[("pubA", true)]); + // Only version 2.0 exists + let v_new = mk_fmri("pubA", "compress/gzip", mk_version("2.0.0", None, Some("20200201T000000Z"))); + write_manifest_to_catalog(&img, &v_new, &Manifest::new()); + // Add lock to non-existent 1.0.0 -> should be ignored + img.add_incorporation_lock("compress/gzip", "1.0.0").expect("add lock"); + let c = Constraint { stem: "compress/gzip".to_string(), version_req: None, preferred_publishers: vec![], branch: None }; + let plan = resolve_install(&img, &[c]).expect("resolve"); + assert_eq!(plan.add.len(), 1); + assert_eq!(plan.add[0].fmri.version(), v_new.version()); + } +} + #[cfg(test)] mod composite_release_tests { use super::*; diff --git a/ports/Cargo.toml b/ports/Cargo.toml index a3aa119..5ea0c07 100644 --- a/ports/Cargo.toml +++ b/ports/Cargo.toml @@ -12,11 +12,11 @@ keywords.workspace = true [dependencies] anyhow = "1.0.59" -clap = {version = "3.2.16", features = [ "derive", "env" ] } +clap = {version = "4", features = [ "derive", "env" ] } specfile = {path = "../specfile"} -shellexpand = "2.1.2" +shellexpand = "3" url = { version = "2.2.2", features = ["serde"]} -reqwest = { version = "0.11", features = ["blocking"] } -which = "4.3.0" +reqwest = { version = "0.12", features = ["blocking"] } +which = "8" libips = {path = "../libips"} thiserror = "*" \ No newline at end of file diff --git a/ports/src/main.rs b/ports/src/main.rs index d9feedb..edf15c2 100644 --- a/ports/src/main.rs +++ b/ports/src/main.rs @@ -2,6 +2,7 @@ mod sources; #[allow(clippy::result_large_err)] mod workspace; +use clap::ArgAction; use crate::workspace::Workspace; use anyhow::anyhow; use anyhow::Result; @@ -29,7 +30,7 @@ struct Cli { #[clap(short, long, env)] pub config: Option, - #[clap(short, parse(from_occurrences))] + #[clap(short, action = ArgAction::Count)] pub verbose: i8, } diff --git a/userland/Cargo.toml b/userland/Cargo.toml index b2fb26f..27133e8 100644 --- a/userland/Cargo.toml +++ b/userland/Cargo.toml @@ -12,19 +12,13 @@ keywords.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.56" -thiserror = "1.0.30" -pest_derive = "2.1.0" -maplit = "1.0.2" -pest = "2.1.0" -reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"] } -semver = "1.0.13" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" +anyhow = "1" +thiserror = "2" +pest_derive = "2" +pest = "2" +reqwest = { version = "0.12", features = ["blocking", "json", "rustls-tls"] } +semver = "1" +serde = { version = "1", features = ["derive"] } regex = "1" lazy_static = "1" -url = { version = "2.2.2", features = ["serde"] } - -[dependencies.openssl] -version = "*" -features = ["vendored"] +url = { version = "2", features = ["serde"] }