diff --git a/Cargo.lock b/Cargo.lock index 0f06e1a22..f2f0b343e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" dependencies = [ "gimli", ] @@ -105,15 +105,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - [[package]] name = "aho-corasick" version = "1.0.4" @@ -155,15 +146,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" dependencies = [ "utf8parse", ] @@ -179,9 +170,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -224,15 +215,15 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" dependencies = [ "addr2line", "cc", "cfg-if", "libc", - "miniz_oxide 0.6.2", + "miniz_oxide", "object", "rustc-demangle", ] @@ -275,9 +266,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "block-buffer" @@ -290,9 +281,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" +checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" dependencies = [ "memchr", "serde", @@ -367,9 +358,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.4" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ "serde", ] @@ -392,9 +383,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" +checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" dependencies = [ "serde", ] @@ -415,11 +406,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.79" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" dependencies = [ "jobserver", + "libc", ] [[package]] @@ -532,9 +524,9 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "comfy-table" -version = "6.2.0" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" +checksum = "9ab77dbd8adecaf3f0db40581631b995f312a8a5ae3aa9993188bb8f23d83a5b" dependencies = [ "crossterm", "strum", @@ -601,9 +593,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -654,14 +646,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.8.0", + "memoffset 0.9.0", "scopeguard", ] @@ -677,9 +669,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -702,9 +694,9 @@ dependencies = [ [[package]] name = "crossterm_winapi" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" dependencies = [ "winapi", ] @@ -746,12 +738,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "darling_core 0.20.1", - "darling_macro 0.20.1", + "darling_core 0.20.3", + "darling_macro 0.20.3", ] [[package]] @@ -770,9 +762,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", @@ -795,15 +787,24 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.1" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ - "darling_core 0.20.1", + "darling_core 0.20.3", "quote", "syn 2.0.28", ] +[[package]] +name = "deranged" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +dependencies = [ + "serde", +] + [[package]] name = "derivative" version = "2.2.0" @@ -834,7 +835,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e8ef033054e131169b8f0f9a7af8f5533a9436fadf3c500ed547f730f07090d" dependencies = [ - "darling 0.20.1", + "darling 0.20.3", "proc-macro2", "quote", "syn 2.0.28", @@ -924,9 +925,9 @@ dependencies = [ [[package]] name = "dissimilar" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "210ec60ae7d710bed8683e333e9d2855a8a56a3e9892b38bad3bb0d4d29b0d5e" +checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632" [[package]] name = "duct" @@ -948,9 +949,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -999,15 +1000,15 @@ dependencies = [ [[package]] name = "equivalent" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ "errno-dragonfly", "libc", @@ -1064,12 +1065,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", - "miniz_oxide 0.7.1", + "miniz_oxide", ] [[package]] @@ -1211,14 +1212,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "windows-targets 0.48.0", + "windows-targets 0.48.2", ] [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", @@ -1227,9 +1228,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] name = "glob" @@ -1239,11 +1240,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" dependencies = [ - "aho-corasick 0.7.20", + "aho-corasick", "bstr", "fnv", "log", @@ -1252,9 +1253,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes", "fnv", @@ -1301,18 +1302,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "hex" @@ -1362,9 +1354,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -1374,9 +1366,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.26" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -1389,7 +1381,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -1398,10 +1390,11 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ + "futures-util", "http", "hyper", "rustls", @@ -1411,9 +1404,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.56" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1539,43 +1532,42 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.7.2" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.37.19", + "hermit-abi", + "rustix 0.38.8", "windows-sys 0.48.0", ] [[package]] name = "itertools" -version = "0.10.5" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" @@ -1588,9 +1580,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f37a4a5928311ac501dee68b3c7613a1037d0edb30c8e5427bd832d55d1b790" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -1615,9 +1607,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" @@ -1641,7 +1633,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] [[package]] @@ -1661,9 +1653,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] @@ -1696,15 +1688,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.7.1" @@ -1752,20 +1735,20 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -1786,9 +1769,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.30.4" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" dependencies = [ "memchr", ] @@ -1870,7 +1853,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.0", + "windows-targets 0.48.2", ] [[package]] @@ -1884,9 +1867,9 @@ dependencies = [ [[package]] name = "pbkdf2" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ca0b5a68607598bf3bad68f32227a8164f6254833f84eafaac409cd6746c31" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest", "hmac", @@ -1900,9 +1883,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" [[package]] name = "pin-utils" @@ -1929,9 +1912,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794" +checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e" [[package]] name = "ppv-lite86" @@ -1981,9 +1964,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] @@ -2034,9 +2017,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.29" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" dependencies = [ "proc-macro2", ] @@ -2124,13 +2107,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.4" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" dependencies = [ - "aho-corasick 1.0.4", + "aho-corasick", "memchr", - "regex-syntax 0.7.2", + "regex-automata 0.3.6", + "regex-syntax 0.7.4", ] [[package]] @@ -2142,6 +2126,17 @@ dependencies = [ "regex-syntax 0.6.29", ] +[[package]] +name = "regex-automata" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", +] + [[package]] name = "regex-syntax" version = "0.6.29" @@ -2150,9 +2145,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.2" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "relative-path" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" +checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698" [[package]] name = "reqwest" @@ -2240,9 +2241,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.17.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de1bb486a691878cd320c2f0d319ba91eeaa2e894066d8b5f8f117c000e9d962" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" dependencies = [ "futures", "futures-timer", @@ -2252,15 +2253,18 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.17.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290ca1a1c8ca7edb7c3283bd44dc35dd54fdec6253a3912e201ba1072018fca8" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" dependencies = [ "cfg-if", + "glob", "proc-macro2", "quote", + "regex", + "relative-path", "rustc_version", - "syn 1.0.109", + "syn 2.0.28", "unicode-ident", ] @@ -2307,7 +2311,7 @@ version = "0.5.4-dev" dependencies = [ "abscissa_core", "aes256ctr_poly1305aes", - "aho-corasick 1.0.4", + "aho-corasick", "anyhow", "binrw", "bytes", @@ -2366,7 +2370,7 @@ dependencies = [ "tracing-error", "tracing-subscriber", "walkdir", - "xattr 1.0.1", + "xattr", "zstd", ] @@ -2375,7 +2379,7 @@ name = "rustic_core" version = "0.6.0" dependencies = [ "aes256ctr_poly1305aes", - "aho-corasick 1.0.4", + "aho-corasick", "backoff", "binrw", "bytes", @@ -2427,10 +2431,11 @@ dependencies = [ "sha2", "shell-words", "simplelog", + "tempfile", "thiserror", "url", "walkdir", - "xattr 1.0.1", + "xattr", "zstd", ] @@ -2438,16 +2443,16 @@ dependencies = [ name = "rustic_testing" version = "0.1.0" dependencies = [ - "aho-corasick 1.0.4", + "aho-corasick", "once_cell", "tempfile", ] [[package]] name = "rustix" -version = "0.37.19" +version = "0.37.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", "errno", @@ -2459,22 +2464,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.4" +version = "0.38.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" dependencies = [ - "bitflags 2.3.3", + "bitflags 2.4.0", "errno", "libc", - "linux-raw-sys 0.4.3", + "linux-raw-sys 0.4.5", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.21.1" +version = "0.21.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c911ba11bc8433e811ce56fde130ccf32f5127cab0e0194e9c68c5a5b671791e" +checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" dependencies = [ "log", "ring", @@ -2484,9 +2489,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -2496,18 +2501,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64", ] [[package]] name = "rustls-webpki" -version = "0.100.1" +version = "0.101.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +checksum = "261e9e0888cba427c3316e6322805653c9425240b6fd96cee7cb671ab70ab8d0" dependencies = [ "ring", "untrusted", @@ -2524,15 +2529,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salsa20" @@ -2554,18 +2559,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "scrypt" @@ -2600,9 +2605,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.9.1" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -2613,9 +2618,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -2623,9 +2628,9 @@ dependencies = [ [[package]] name = "self_update" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4e4e6f29fddb78b3e7a6e5a395e8274d4aca2d36b2278a297fa49673a5b7c7" +checksum = "a667e18055120bcc9a658d55d36f2f6bfc82e07968cc479ee7774e3bfb501e14" dependencies = [ "either", "flate2", @@ -2737,7 +2742,7 @@ version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9197f1ad0e3c173a0222d3c4404fb04c3afe87e962bcb327af73e8301fa203c7" dependencies = [ - "darling 0.20.1", + "darling 0.20.3", "proc-macro2", "quote", "syn 2.0.28", @@ -2757,9 +2762,9 @@ dependencies = [ [[package]] name = "sha2-asm" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf27176fb5d15398e3a479c652c20459d9dac830dedd1fa55b42a77dbcdbfcea" +checksum = "f27ba7066011e3fb30d808b51affff34f0a66d3a03a58edd787c6e420e40e44e" dependencies = [ "cc", ] @@ -2791,9 +2796,9 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] name = "signal-hook" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" dependencies = [ "libc", "signal-hook-registry", @@ -2841,9 +2846,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" dependencies = [ "serde", ] @@ -2870,6 +2875,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -2949,13 +2964,13 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", - "xattr 0.2.3", + "xattr", ] [[package]] @@ -2967,7 +2982,7 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix 0.38.4", + "rustix 0.38.8", "windows-sys 0.48.0", ] @@ -2986,7 +3001,7 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" dependencies = [ - "rustix 0.37.19", + "rustix 0.37.23", "windows-sys 0.48.0", ] @@ -3022,10 +3037,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.21" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" +checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" dependencies = [ + "deranged", "itoa", "libc", "num_threads", @@ -3042,9 +3058,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "time-macros" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" +checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" dependencies = [ "time-core", ] @@ -3075,18 +3091,18 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.2" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ - "autocfg", + "backtrace", "bytes", "libc", "mio", "num_cpus", "parking_lot", "pin-project-lite", - "socket2", + "socket2 0.5.3", "tokio-macros", "windows-sys 0.48.0", ] @@ -3104,9 +3120,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", @@ -3159,9 +3175,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.12" +version = "0.19.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" dependencies = [ "indexmap 2.0.0", "serde", @@ -3202,9 +3218,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", @@ -3280,9 +3296,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" @@ -3334,9 +3350,9 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "utf8parse" @@ -3377,11 +3393,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -3393,9 +3408,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bba0e8cb82ba49ff4e229459ff22a191bbe9a1cb3a341610c9c33efc27ddf73" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3403,9 +3418,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b04bc93f9d6bdee709f6bd2118f57dd6679cf1176a1af464fca3ab0d66d8fb" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", @@ -3418,9 +3433,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.36" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d1985d03709c53167ce907ff394f5316aa22cb4e12761295c5dc57dacb6297e" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -3430,9 +3445,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d6b024f1a526bb0234f52840389927257beb670610081360e5a03c5df9c258" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3440,9 +3455,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e128beba882dd1eb6200e1dc92ae6c5dbaa4311aa7bb211ca035779e5efc39f8" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", @@ -3453,9 +3468,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.86" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9d5b4305409d1fc9482fee2d7f9bcbf24b3972bf59817ef757e23982242a93" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-streams" @@ -3472,9 +3487,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.63" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdd9ef4e984da1187bf8110c5cf5b845fbc87a23602cdf912386a76fcd3a7c2" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -3536,22 +3551,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.48.2", ] [[package]] @@ -3569,7 +3569,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.2", ] [[package]] @@ -3589,17 +3589,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "d1eeca1c172a285ee6c2c84c341ccea837e7c01b12fbb2d0fe3c9e550ce49ec8" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.2", + "windows_aarch64_msvc 0.48.2", + "windows_i686_gnu 0.48.2", + "windows_i686_msvc 0.48.2", + "windows_x86_64_gnu 0.48.2", + "windows_x86_64_gnullvm 0.48.2", + "windows_x86_64_msvc 0.48.2", ] [[package]] @@ -3610,9 +3610,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "b10d0c968ba7f6166195e13d593af609ec2e3d24f916f081690695cf5eaffb2f" [[package]] name = "windows_aarch64_msvc" @@ -3622,9 +3622,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "571d8d4e62f26d4932099a9efe89660e8bd5087775a2ab5cdd8b747b811f1058" [[package]] name = "windows_i686_gnu" @@ -3634,9 +3634,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "2229ad223e178db5fbbc8bd8d3835e51e566b8474bfca58d2e6150c48bb723cd" [[package]] name = "windows_i686_msvc" @@ -3646,9 +3646,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "600956e2d840c194eedfc5d18f8242bc2e17c7775b6684488af3a9fff6fe3287" [[package]] name = "windows_x86_64_gnu" @@ -3658,9 +3658,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "ea99ff3f8b49fb7a8e0d305e5aec485bd068c2ba691b6e277d29eaeac945868a" [[package]] name = "windows_x86_64_gnullvm" @@ -3670,9 +3670,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "8f1a05a1ece9a7a0d5a7ccf30ba2c33e3a61a30e042ffd247567d1de1d94120d" [[package]] name = "windows_x86_64_msvc" @@ -3682,15 +3682,15 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "d419259aba16b663966e29e6d7c6ecfa0bb8425818bb96f6f1f3c3eb71a6e7b9" [[package]] name = "winnow" -version = "0.4.6" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699" +checksum = "83817bbecf72c73bad717ee86820ebf286203d2e04c3951f3cd538869c897364" dependencies = [ "memchr", ] @@ -3704,15 +3704,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "xattr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" -dependencies = [ - "libc", -] - [[package]] name = "xattr" version = "1.0.1" @@ -3757,9 +3748,9 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "6.0.5+zstd.1.5.4" +version = "6.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" dependencies = [ "libc", "zstd-sys", diff --git a/Cargo.toml b/Cargo.toml index 180cfb75e..7dbef1070 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -203,7 +203,7 @@ reqwest = { version = "0.11", default-features = false, features = [ "blocking", ] } backoff = "0.4" -url = "2.3.1" +url = "2.4.0" # rclone backend semver = "1" @@ -226,7 +226,7 @@ rhai = { version = "1.15", features = [ "only_i64", ] } simplelog = "0.12" -comfy-table = "6.1.4" +comfy-table = "7.0.1" # cache dirs = "5" @@ -241,19 +241,19 @@ path-dedot = "3" dunce = "1" gethostname = "0.4" bytesize = "1" -itertools = "0.10" +itertools = "0.11" humantime = "2" clap_complete = "4" clap = { version = "4", features = ["derive", "env", "wrap_help"] } -once_cell = "1.17" -self_update = { version = "0.36", default-features = false, features = [ +once_cell = "1.18" +self_update = { version = "0.37", default-features = false, features = [ "rustls", "archive-tar", "compression-flate2", ] } # dev dependencies -rstest = "0.17" +rstest = "0.18" quickcheck = "1" quickcheck_macros = "1" tempfile = "3.7" diff --git a/crates/rustic_core/Cargo.toml b/crates/rustic_core/Cargo.toml index b39a74e73..8bddb376b 100644 --- a/crates/rustic_core/Cargo.toml +++ b/crates/rustic_core/Cargo.toml @@ -115,7 +115,7 @@ sha2 = "0.10" xattr = "1" [dev-dependencies] -rustup-toolchain = "0.1.4" +rustup-toolchain = "0.1.5" rustdoc-json = "0.8.7" public-api = "0.31.3" rstest = { workspace = true } diff --git a/crates/rustic_core/src/backend.rs b/crates/rustic_core/src/backend.rs index 42e780296..9ed9b6de1 100644 --- a/crates/rustic_core/src/backend.rs +++ b/crates/rustic_core/src/backend.rs @@ -292,7 +292,7 @@ pub trait ReadSourceOpen { } /// Trait for backends that can read from a source. -/// +/// /// This trait is implemented by all backends that can read data from a source. pub trait ReadSource { type Open: ReadSourceOpen; @@ -306,7 +306,7 @@ pub trait ReadSource { } /// Trait for backends that can write to a source. -/// +/// /// This trait is implemented by all backends that can write data to a source. pub trait WriteSource: Clone { /// Create a new source. diff --git a/crates/rustic_core/src/backend/local.rs b/crates/rustic_core/src/backend/local.rs index aba8e4634..88fe30f36 100644 --- a/crates/rustic_core/src/backend/local.rs +++ b/crates/rustic_core/src/backend/local.rs @@ -31,7 +31,6 @@ use crate::{ }, error::{LocalErrorKind, RusticResult}, id::Id, - repository::parse_command, }; /// Local backend, used when backing up. diff --git a/crates/rustic_core/src/blob.rs b/crates/rustic_core/src/blob.rs index 7297518f0..27ecc5105 100644 --- a/crates/rustic_core/src/blob.rs +++ b/crates/rustic_core/src/blob.rs @@ -76,7 +76,7 @@ impl Initialize for BlobTypeMap { pub(crate) struct Blob { /// The type of the blob tpe: BlobType, - + /// The id of the blob id: Id, } diff --git a/crates/rustic_core/src/blob/tree.rs b/crates/rustic_core/src/blob/tree.rs index 6bc718dff..bdcaa8a09 100644 --- a/crates/rustic_core/src/blob/tree.rs +++ b/crates/rustic_core/src/blob/tree.rs @@ -253,6 +253,7 @@ where /// /// * [`TreeErrorKind::BlobIdNotFound`] - If the tree ID is not found in the backend. /// * [`TreeErrorKind::DeserializingTreeFailed`] - If deserialization fails. + #[allow(unused)] pub fn new(be: BE, node: &Node) -> RusticResult { Self::new_streamer(be, node, None, true) } @@ -305,12 +306,7 @@ where /// /// * [`TreeErrorKind::BuildingNodeStreamerFailed`] - If building the streamer fails. /// * [`TreeErrorKind::ReadingFileStringFromGlobsFailed`] - If reading a glob file fails. - pub fn new_with_glob( - be: BE, - node: &Node, - opts: &TreeStreamerOptions, - recursive: bool, - ) -> RusticResult { + pub fn new_with_glob(be: BE, node: &Node, opts: &TreeStreamerOptions) -> RusticResult { let mut override_builder = OverrideBuilder::new(""); for g in &opts.glob { diff --git a/crates/rustic_core/src/chunker.rs b/crates/rustic_core/src/chunker.rs index f21d59b19..913024122 100644 --- a/crates/rustic_core/src/chunker.rs +++ b/crates/rustic_core/src/chunker.rs @@ -40,25 +40,25 @@ pub(crate) struct ChunkIter { /// The position in the buffer. pos: usize, - + /// The reader. reader: R, - + /// The predicate used to determine if a chunk is a chunk boundary. predicate: fn(u64) -> bool, - + /// The rolling hash. rabin: Rabin64, - + /// The size hint is used to optimize memory allocation; this should be an upper bound on the size. size_hint: usize, - + /// The minimum size of a chunk. min_size: usize, - + /// The maximum size of a chunk. max_size: usize, - + /// If the iterator is finished. finished: bool, } diff --git a/crates/rustic_core/src/repository.rs b/crates/rustic_core/src/repository.rs index fa5933d90..80da552d3 100644 --- a/crates/rustic_core/src/repository.rs +++ b/crates/rustic_core/src/repository.rs @@ -1103,9 +1103,8 @@ impl Repository { &self, node: &Node, ls_opts: &LsOptions, - recursive: bool, ) -> RusticResult> + Clone> { - NodeStreamer::new_with_glob(self.index().clone(), node, ls_opts, recursive) + NodeStreamer::new_with_glob(self.index().clone(), node, ls_opts) } /// Restore a given [`RestorePlan`] to a local destination diff --git a/src/commands/backup.rs b/src/commands/backup.rs index a514a1d8e..40348857b 100644 --- a/src/commands/backup.rs +++ b/src/commands/backup.rs @@ -10,17 +10,15 @@ use crate::{ {status_err, Application, RUSTIC_APP}, }; use abscissa_core::{Command, Runnable, Shutdown}; -use anyhow::{bail, Result}; +use anyhow::{bail, Context, Result}; use log::{debug, info, warn}; -use chrono::Local; - use merge::Merge; use serde::Deserialize; use rustic_core::{ - BackupOpts, LocalSourceFilterOptions, LocalSourceSaveOptions, ParentOpts, PathList, - SnapshotFile, SnapshotOptions, + BackupOptions, LocalSourceFilterOptions, LocalSourceSaveOptions, ParentOptions, PathList, + SnapshotOptions, }; /// `backup` subcommand @@ -60,7 +58,7 @@ pub struct BackupCmd { #[clap(flatten, next_help_heading = "Options for parent processing")] #[serde(flatten)] - parent_opts: ParentOpts, + parent_opts: ParentOptions, #[clap(flatten, next_help_heading = "Exclude options")] #[serde(flatten)] @@ -98,13 +96,6 @@ impl Runnable for BackupCmd { impl BackupCmd { fn inner_run(&self) -> Result<()> { - let time = Local::now(); - - let command: String = std::env::args_os() - .map(|s| s.to_string_lossy().to_string()) - .collect::>() - .join(" "); - let config = RUSTIC_APP.config(); let repo = open_repository(&config)?.to_indexed_ids()?; @@ -123,13 +114,18 @@ impl BackupCmd { let config_sources: Vec<_> = config_opts .iter() - .filter_map(|opt| match PathList::from_string(&opt.source, true) { + .map(|opt| -> Result<_> { + Ok(PathList::from_string(&opt.source)? + .sanitize() + .with_context(|| { + format!("error sanitizing source=\"{}\" in config file", opt.source) + })? + .merge()) + }) + .filter_map(|p| match p { Ok(paths) => Some(paths), Err(err) => { - warn!( - "error sanitizing source=\"{}\" in config file: {err}", - opt.source - ); + warn!("{err}"); None } }) @@ -137,7 +133,7 @@ impl BackupCmd { let sources = match (self.cli_sources.is_empty(), config_opts.is_empty()) { (false, _) => { - let item = PathList::from_strings(&self.cli_sources, true)?; + let item = PathList::from_strings(&self.cli_sources).sanitize()?; vec![item] } (true, false) => { @@ -174,15 +170,14 @@ impl BackupCmd { // merge "backup" section from config file, if given opts.merge(config.backup.clone()); - let snap = SnapshotFile::new_from_options(&opts.snap_opts, time, command.clone())?; - let backup_opts = BackupOpts { - stdin_filename: opts.stdin_filename, - as_path: opts.as_path, - parent_opts: opts.parent_opts, - ignore_save_opts: opts.ignore_save_opts, - ignore_filter_opts: opts.ignore_filter_opts, - }; - let snap = repo.backup(&backup_opts, source.clone(), snap, config.global.dry_run)?; + let backup_opts = BackupOptions::default() + .stdin_filename(opts.stdin_filename) + .as_path(opts.as_path) + .parent_opts(opts.parent_opts) + .ignore_save_opts(opts.ignore_save_opts) + .ignore_filter_opts(opts.ignore_filter_opts) + .dry_run(config.global.dry_run); + let snap = repo.backup(&backup_opts, source.clone(), opts.snap_opts.to_snapshot()?)?; if opts.json { let mut stdout = std::io::stdout(); diff --git a/src/commands/cat.rs b/src/commands/cat.rs index 63c457996..35cc208b5 100644 --- a/src/commands/cat.rs +++ b/src/commands/cat.rs @@ -8,7 +8,7 @@ use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::Result; -use rustic_core::{BlobType, FileType}; +use rustic_core::repofile::{BlobType, FileType}; /// `cat` subcommand #[derive(clap::Parser, Command, Debug)] @@ -64,10 +64,10 @@ impl CatCmd { CatSubCmd::Config => repo.cat_file(FileType::Config, "")?, CatSubCmd::Index(opt) => repo.cat_file(FileType::Index, &opt.id)?, CatSubCmd::Snapshot(opt) => repo.cat_file(FileType::Snapshot, &opt.id)?, - // special treatment for cating blobs: read the index and use it to locate the blob + // special treatment for 'cat'ing blobs: read the index and use it to locate the blob CatSubCmd::TreeBlob(opt) => repo.to_indexed()?.cat_blob(BlobType::Tree, &opt.id)?, CatSubCmd::DataBlob(opt) => repo.to_indexed()?.cat_blob(BlobType::Data, &opt.id)?, - // special treatment for cating a tree within a snapshot + // special treatment for 'cat'ing a tree within a snapshot CatSubCmd::Tree(opt) => repo .to_indexed()? .cat_tree(&opt.snap, |sn| config.snapshot_filter.matches(sn))?, diff --git a/src/commands/check.rs b/src/commands/check.rs index 381214804..ac994b2c3 100644 --- a/src/commands/check.rs +++ b/src/commands/check.rs @@ -6,13 +6,13 @@ use crate::{commands::open_repository, status_err, Application, RUSTIC_APP}; use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::Result; -use rustic_core::CheckOpts; +use rustic_core::CheckOptions; /// `check` subcommand #[derive(clap::Parser, Command, Debug)] pub(crate) struct CheckCmd { #[clap(flatten)] - opts: CheckOpts, + opts: CheckOptions, } impl Runnable for CheckCmd { diff --git a/src/commands/config.rs b/src/commands/config.rs index 7d882dd7d..c561d04ad 100644 --- a/src/commands/config.rs +++ b/src/commands/config.rs @@ -8,13 +8,13 @@ use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::Result; -use rustic_core::ConfigOpts; +use rustic_core::ConfigOptions; /// `config` subcommand #[derive(clap::Parser, Command, Debug)] pub(crate) struct ConfigCmd { #[clap(flatten)] - config_opts: ConfigOpts, + config_opts: ConfigOptions, } impl Runnable for ConfigCmd { diff --git a/src/commands/copy.rs b/src/commands/copy.rs index 2864a410b..fc6b1fc86 100644 --- a/src/commands/copy.rs +++ b/src/commands/copy.rs @@ -12,7 +12,7 @@ use log::{error, info}; use merge::Merge; use serde::Deserialize; -use rustic_core::{CopySnapshot, Id, KeyOpts, Open, Repository, RepositoryOptions}; +use rustic_core::{CopySnapshot, Id, KeyOptions, Repository, RepositoryOptions}; /// `copy` subcommand #[derive(clap::Parser, Command, Debug)] @@ -26,7 +26,7 @@ pub(crate) struct CopyCmd { init: bool, #[clap(flatten, next_help_heading = "Key options (when using --init)")] - key_opts: KeyOpts, + key_opts: KeyOptions, } #[derive(Default, Clone, Debug, Deserialize, Merge)] diff --git a/src/commands/diff.rs b/src/commands/diff.rs index 38edeafba..8e25fdf62 100644 --- a/src/commands/diff.rs +++ b/src/commands/diff.rs @@ -11,9 +11,9 @@ use std::path::{Path, PathBuf}; use anyhow::{bail, Context, Result}; use rustic_core::{ - BlobType, IndexedFull, LocalDestination, LocalSource, LocalSourceFilterOptions, - LocalSourceSaveOptions, Node, NodeType, ReadSourceEntry, Repository, RusticResult, - TreeStreamerOptions, + repofile::{BlobType, Node, NodeType}, + IndexedFull, LocalDestination, LocalSource, LocalSourceFilterOptions, LocalSourceSaveOptions, + LsOptions, ReadSourceEntry, Repository, RusticResult, }; /// `diff` subcommand @@ -60,7 +60,7 @@ impl DiffCmd { _ = match (id1, id2) { (Some(id1), Some(id2)) => { // diff between two snapshots - let snaps = repo.get_snapshots(&[id1.to_string(), id2.to_string()])?; + let snaps = repo.get_snapshots(&[id1, id2])?; let snap1 = &snaps[0]; let snap2 = &snaps[1]; @@ -69,8 +69,8 @@ impl DiffCmd { let node2 = repo.node_from_snapshot_and_path(snap2, path2)?; diff( - repo.ls(&node1, &TreeStreamerOptions::default(), true)?, - repo.ls(&node2, &TreeStreamerOptions::default(), true)?, + repo.ls(&node1, &LsOptions::default())?, + repo.ls(&node2, &LsOptions::default())?, self.no_content, |_path, node1, node2| Ok(node1.content == node2.content), self.metadata, @@ -106,7 +106,7 @@ impl DiffCmd { }); diff( - repo.ls(&node1, &TreeStreamerOptions::default(), true)?, + repo.ls(&node1, &LsOptions::default())?, src, self.no_content, |path, node1, _node2| identical_content_local(&local, &repo, path, node1), diff --git a/src/commands/init.rs b/src/commands/init.rs index b13763be1..d0f331ed2 100644 --- a/src/commands/init.rs +++ b/src/commands/init.rs @@ -9,16 +9,16 @@ use crate::{Application, RUSTIC_APP}; use dialoguer::Password; -use rustic_core::{ConfigOpts, KeyOpts, Repository}; +use rustic_core::{ConfigOptions, KeyOptions, Repository}; /// `init` subcommand #[derive(clap::Parser, Command, Debug)] pub(crate) struct InitCmd { #[clap(flatten, next_help_heading = "Key options")] - key_opts: KeyOpts, + key_opts: KeyOptions, #[clap(flatten, next_help_heading = "Config options")] - config_opts: ConfigOpts, + config_opts: ConfigOptions, } impl Runnable for InitCmd { @@ -48,8 +48,8 @@ impl InitCmd { pub(crate) fn init( repo: Repository, - key_opts: &KeyOpts, - config_opts: &ConfigOpts, + key_opts: &KeyOptions, + config_opts: &ConfigOptions, ) -> Result<()> { let pass = repo.password()?.unwrap_or_else(|| { match Password::new() diff --git a/src/commands/key.rs b/src/commands/key.rs index 62ebc53b4..cdd5f7964 100644 --- a/src/commands/key.rs +++ b/src/commands/key.rs @@ -11,7 +11,7 @@ use anyhow::Result; use dialoguer::Password; use log::info; -use rustic_core::{KeyOpts, Repository, RepositoryOptions}; +use rustic_core::{KeyOptions, Repository, RepositoryOptions}; /// `key` subcommand #[derive(clap::Parser, Command, Debug)] @@ -33,7 +33,7 @@ pub(crate) struct AddCmd { pub(crate) new_password_file: Option, #[clap(flatten)] - pub(crate) key_opts: KeyOpts, + pub(crate) key_opts: KeyOptions, } impl Runnable for KeyCmd { diff --git a/src/commands/list.rs b/src/commands/list.rs index 6fb068ee6..ea167fbe9 100644 --- a/src/commands/list.rs +++ b/src/commands/list.rs @@ -8,7 +8,7 @@ use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::{bail, Result}; -use rustic_core::{FileType, IndexFile}; +use rustic_core::repofile::{FileType, IndexFile}; /// `list` subcommand #[derive(clap::Parser, Command, Debug)] diff --git a/src/commands/ls.rs b/src/commands/ls.rs index f847c39fe..4d2048fee 100644 --- a/src/commands/ls.rs +++ b/src/commands/ls.rs @@ -9,7 +9,10 @@ use crate::{commands::open_repository, status_err, Application, RUSTIC_APP}; use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::Result; -use rustic_core::{Node, NodeType, TreeStreamerOptions}; +use rustic_core::{ + repofile::{Node, NodeType}, + LsOptions, +}; mod constants { // constants from man page inode(7) @@ -34,10 +37,6 @@ pub(crate) struct LsCmd { #[clap(value_name = "SNAPSHOT[:PATH]")] snap: String, - /// recursively list the dir (default when no PATH is given) - #[clap(long)] - recursive: bool, - /// show summary #[clap(long, short = 's')] summary: bool, @@ -47,7 +46,7 @@ pub(crate) struct LsCmd { long: bool, #[clap(flatten)] - streamer_opts: TreeStreamerOptions, + ls_opts: LsOptions, } impl Runnable for LsCmd { @@ -88,11 +87,12 @@ impl LsCmd { repo.node_from_snapshot_path(&self.snap, |sn| config.snapshot_filter.matches(sn))?; // recursive if standard if we specify a snapshot without dirs. In other cases, use the parameter `recursive` - let recursive = !self.snap.contains(':') || self.recursive; + let mut ls_opts = self.ls_opts.clone(); + ls_opts.recursive = !self.snap.contains(':') || ls_opts.recursive; let mut summary = Summary::default(); - for item in repo.ls(&node, &self.streamer_opts, recursive)? { + for item in repo.ls(&node, &ls_opts)? { let (path, node) = item?; summary.update(&node); if self.long { diff --git a/src/commands/merge.rs b/src/commands/merge.rs index b286f1386..ae7acb367 100644 --- a/src/commands/merge.rs +++ b/src/commands/merge.rs @@ -9,7 +9,7 @@ use log::info; use chrono::Local; -use rustic_core::{Node, SnapshotFile, SnapshotOptions}; +use rustic_core::{last_modified_node, repofile::SnapshotFile, SnapshotOptions}; /// `merge` subcommand #[derive(clap::Parser, Default, Command, Debug)] @@ -41,13 +41,6 @@ impl Runnable for MergeCmd { impl MergeCmd { fn inner_run(&self) -> Result<()> { - let now = Local::now(); - - let command: String = std::env::args_os() - .map(|s| s.to_string_lossy().to_string()) - .collect::>() - .join(" "); - let config = RUSTIC_APP.config(); let repo = open_repository(&config)?.to_indexed_ids()?; @@ -57,11 +50,9 @@ impl MergeCmd { repo.get_snapshots(&self.ids)? }; - let snap = SnapshotFile::new_from_options(&self.snap_opts, now, command)?; - - let cmp = |n1: &Node, n2: &Node| n1.meta.mtime.cmp(&n2.meta.mtime); + let snap = SnapshotFile::from_options(&self.snap_opts)?; - let snap = repo.merge_snapshots(&snapshots, &cmp, snap)?; + let snap = repo.merge_snapshots(&snapshots, &last_modified_node, snap)?; if self.json { let mut stdout = std::io::stdout(); diff --git a/src/commands/prune.rs b/src/commands/prune.rs index 2f3835bc0..d39f58d5d 100644 --- a/src/commands/prune.rs +++ b/src/commands/prune.rs @@ -10,15 +10,14 @@ use log::debug; use anyhow::Result; -use rustic_core::{PruneOpts, PruneStats, Sum}; +use rustic_core::{PruneOptions, PruneStats}; /// `prune` subcommand #[allow(clippy::struct_excessive_bools)] #[derive(clap::Parser, Command, Debug, Clone)] -#[group(id = "prune_opts")] pub(crate) struct PruneCmd { #[clap(flatten)] - pub(crate) opts: PruneOpts, + pub(crate) opts: PruneOptions, } impl Runnable for PruneCmd { @@ -51,8 +50,8 @@ impl PruneCmd { #[allow(clippy::cast_precision_loss)] fn print_stats(stats: &PruneStats) { let pack_stat = &stats.packs; - let blob_stat = stats.blobs.sum(); - let size_stat = stats.size.sum(); + let blob_stat = stats.blobs_sum(); + let size_stat = stats.size_sum(); debug!( "used: {:>10} blobs, {:>10}", diff --git a/src/commands/restore.rs b/src/commands/restore.rs index 1dd4c3c0f..703fee41b 100644 --- a/src/commands/restore.rs +++ b/src/commands/restore.rs @@ -10,7 +10,7 @@ use abscissa_core::{Command, Runnable, Shutdown}; use anyhow::Result; use log::info; -use rustic_core::{LocalDestination, RestoreOpts, TreeStreamerOptions}; +use rustic_core::{LocalDestination, LsOptions, RestoreOptions}; use crate::filtering::SnapshotFilter; @@ -27,10 +27,10 @@ pub(crate) struct RestoreCmd { dest: String, #[clap(flatten)] - opts: RestoreOpts, + opts: RestoreOptions, #[clap(flatten)] - streamer_opts: TreeStreamerOptions, + ls_opts: LsOptions, #[clap( flatten, @@ -55,7 +55,11 @@ impl RestoreCmd { let node = repo.node_from_snapshot_path(&self.snap, |sn| config.snapshot_filter.matches(sn))?; - let ls = repo.ls(&node, &self.streamer_opts, true)?; + + // for restore, always recurse into tree + let mut ls_opts = self.ls_opts.clone(); + ls_opts.recursive = true; + let ls = repo.ls(&node, &ls_opts)?; let dest = LocalDestination::new(&self.dest, true, !node.is_dir())?; diff --git a/src/commands/snapshots.rs b/src/commands/snapshots.rs index 0971505ba..f7443a967 100644 --- a/src/commands/snapshots.rs +++ b/src/commands/snapshots.rs @@ -14,7 +14,10 @@ use comfy_table::Cell; use humantime::format_duration; use itertools::Itertools; -use rustic_core::{DeleteOption, SnapshotFile, SnapshotGroupCriterion}; +use rustic_core::{ + repofile::{DeleteOption, SnapshotFile}, + SnapshotGroupCriterion, +}; /// `snapshot` subcommand #[derive(clap::Parser, Command, Debug)] diff --git a/src/commands/tag.rs b/src/commands/tag.rs index 87efb3ec2..b6df56995 100644 --- a/src/commands/tag.rs +++ b/src/commands/tag.rs @@ -8,7 +8,7 @@ use abscissa_core::{Command, Runnable, Shutdown}; use chrono::{Duration, Local}; -use rustic_core::{DeleteOption, StringList}; +use rustic_core::{repofile::DeleteOption, StringList}; /// `tag` subcommand diff --git a/src/filtering.rs b/src/filtering.rs index dae15c134..9549f4b38 100644 --- a/src/filtering.rs +++ b/src/filtering.rs @@ -1,7 +1,7 @@ use crate::error::RhaiErrorKinds; use log::warn; -use rustic_core::{SnapshotFile, StringList}; +use rustic_core::{repofile::SnapshotFile, StringList}; use std::{error::Error, str::FromStr}; use rhai::{serde::to_dynamic, Dynamic, Engine, FnPtr, AST};