diff --git a/Cargo.lock b/Cargo.lock index 0bdb0feb..f708d351 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -151,35 +151,12 @@ dependencies = [ "thiserror", ] -[[package]] -name = "anstream" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "utf8parse", -] - [[package]] name = "anstyle" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" -[[package]] -name = "anstyle-parse" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" -dependencies = [ - "utf8parse", -] - [[package]] name = "anstyle-query" version = "1.0.2" @@ -189,16 +166,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "anstyle-wincon" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" -dependencies = [ - "anstyle", - "windows-sys 0.52.0", -] - [[package]] name = "anyhow" version = "1.0.72" @@ -272,6 +239,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -297,9 +270,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ "serde", ] @@ -361,6 +334,15 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +[[package]] +name = "bytesize" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3c8f83209414aacf0eeae3cf730b18d6981697fba62f200fcfb92b9f082acba" +dependencies = [ + "serde", +] + [[package]] name = "cassowary" version = "0.3.0" @@ -444,12 +426,6 @@ dependencies = [ "inout", ] -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - [[package]] name = "colored" version = "2.1.0" @@ -481,6 +457,15 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "convert_case" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "coolor" version = "0.9.0" @@ -530,22 +515,56 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossterm" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.8.10", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + [[package]] name = "crossterm" version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "crossterm_winapi", "libc", - "mio", + "mio 0.8.10", "parking_lot", "signal-hook", "signal-hook-mio", "winapi", ] +[[package]] +name = "crossterm" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +dependencies = [ + "bitflags 2.9.1", + "crossterm_winapi", + "derive_more", + "document-features", + "mio 1.0.4", + "parking_lot", + "rustix 1.0.8", + "signal-hook", + "signal-hook-mio", + "winapi", +] + [[package]] name = "crossterm_winapi" version = "0.9.1" @@ -705,6 +724,27 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "diff" version = "0.1.13" @@ -729,6 +769,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -736,10 +787,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] -name = "dyn-clone" -version = "1.0.16" +name = "document-features" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + +[[package]] +name = "dyn-clone" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ec25519" @@ -807,24 +867,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "errno" -version = "0.3.2" +name = "erased-serde" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", + "serde", + "typeid", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "errno" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] @@ -926,9 +985,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -989,7 +1048,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "libc", "libgit2-sys", "log", @@ -1017,6 +1076,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + [[package]] name = "heck" version = "0.5.0" @@ -1073,6 +1138,92 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1081,22 +1232,33 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "indexmap" -version = "2.1.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.4", ] [[package]] @@ -1121,7 +1283,8 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", + "crossterm 0.25.0", "dyn-clone", "fxhash", "newline-converter", @@ -1214,9 +1377,9 @@ checksum = "baff4b617f7df3d896f97fe922b64817f6cd9a756bb81d40f8883f2f66dcb401" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libgit2-sys" @@ -1242,7 +1405,7 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "libc", "redox_syscall 0.4.1", ] @@ -1265,6 +1428,24 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "localtime" version = "1.3.0" @@ -1296,7 +1477,7 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2c024b41519440580066ba82aab04092b333e09066a5eb86c7c4890df31f22" dependencies = [ - "hashbrown", + "hashbrown 0.14.3", ] [[package]] @@ -1347,6 +1528,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + [[package]] name = "multibase" version = "0.9.1" @@ -1386,7 +1579,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "cfg-if", "cfg_aliases", "libc", @@ -1688,6 +1881,15 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1802,12 +2004,13 @@ dependencies = [ [[package]] name = "radicle" -version = "0.14.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd823aeed3ffe73eb82a213e62cb3811f9bdf453844d6e0b14684e0757fb389b" +checksum = "d5fe953b25a8f5c24baf1019f746912e7453746d617a1af04cb347904d241005" dependencies = [ "amplify", - "base64", + "base64 0.21.7", + "bytesize", "chrono", "colored", "crossbeam-channel", @@ -1819,13 +2022,14 @@ dependencies = [ "log", "multibase", "nonempty", - "once_cell", "qcheck", "radicle-cob", "radicle-crypto", "radicle-git-ext", "radicle-ssh", + "schemars", "serde", + "serde-untagged", "serde_json", "siphasher 1.0.0", "sqlite", @@ -1836,9 +2040,9 @@ dependencies = [ [[package]] name = "radicle-cli" -version = "0.12.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41c1d8b9c0a6e5fd92eeefc247107d330e1d0517f1e55ded9d3bf2a12104420" +checksum = "0b362b0301c59fb94f4ead7bd7366c0668ac431c1fed8a9fe8fc88a64b03dc91" dependencies = [ "anyhow", "chrono", @@ -1848,12 +2052,12 @@ dependencies = [ "log", "nonempty", "radicle", - "radicle-cli-test", "radicle-cob", "radicle-crypto", "radicle-git-ext", "radicle-surf", "radicle-term", + "schemars", "serde", "serde_json", "shlex", @@ -1877,24 +2081,11 @@ dependencies = [ "zeroize", ] -[[package]] -name = "radicle-cli-test" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df187ee120e2dfc949bfae6b1acbe8b8d815167ba5229a312cdabfeb4952bc27" -dependencies = [ - "log", - "pretty_assertions", - "shlex", - "snapbox", - "thiserror", -] - [[package]] name = "radicle-cob" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90581a9508ccc310998e991d7acf139d2991297d3fb37d30de07536e10256afb" +checksum = "6e9c90efa7a3febd01d33ed2e72cb12296c971ce03efa243d11c01520fcc1be8" dependencies = [ "fastrand", "git2", @@ -1906,14 +2097,15 @@ dependencies = [ "radicle-git-ext", "serde", "serde_json", + "signature 2.2.0", "thiserror", ] [[package]] name = "radicle-crypto" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d6a67969719841ad06049597006368eb4238ca63a02d20207654dfd1d2d6ad" +checksum = "d16d9e1403a6c3073dce14f3ed893f430bb67d7af6a07cc7fe4b81907025ba22" dependencies = [ "amplify", "cyphernet", @@ -1924,6 +2116,7 @@ dependencies = [ "radicle-git-ext", "radicle-ssh", "serde", + "signature 2.2.0", "sqlite", "ssh-key", "thiserror", @@ -1955,12 +2148,13 @@ dependencies = [ [[package]] name = "radicle-signals" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fba65f6ed964e6e8d34d935f83d40c506f14bf45e60c635042ca4ad4185f149" +checksum = "d2bcf567e08ec477457dafd190a9785f368c9b86272a42c684db609510ebc456" dependencies = [ "crossbeam-channel", "libc", + "signals_receipts", ] [[package]] @@ -1977,9 +2171,9 @@ dependencies = [ [[package]] name = "radicle-std-ext" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db20136bbc9ae63f3fec8e5a6c369f4902fac2244501b5dfc6d668e43475aaa4" +checksum = "5310e7a04506b6ce92dc9c47b26bd24c1c680937a3dcd13cd20847f89dbda32a" [[package]] name = "radicle-surf" @@ -1988,7 +2182,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf6aff57520e8e7200bf7826ddc5ccf8d4612dd880497a4f256c3d272eeb805" dependencies = [ "anyhow", - "base64", + "base64 0.21.7", "flate2", "git2", "log", @@ -2002,20 +2196,19 @@ dependencies = [ [[package]] name = "radicle-term" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829c1f1d97d2d0f0d8738c8050c4821a74b59bf9d034d9b6aae55b19372236de" +checksum = "5fd82b00d1e729319fdeccc6a2e37158b01ad32cc8e4dbff40a612ca94a1e311" dependencies = [ "anstyle-query", "anyhow", "crossbeam-channel", + "crossterm 0.29.0", "git2", "inquire", "libc", - "once_cell", "radicle-signals", "shlex", - "termion 3.0.0", "thiserror", "unicode-display-width", "unicode-segmentation", @@ -2098,7 +2291,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "cassowary", "compact_str", "indoc", @@ -2154,6 +2347,26 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20145670ba436b55d91fc92d25e71160fbfbdd57831631c8d7d36377a476f1cb" +[[package]] +name = "ref-cast" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "regex" version = "1.11.1" @@ -2226,13 +2439,26 @@ version = "0.38.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.5", "windows-sys 0.48.0", ] +[[package]] +name = "rustix" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.52.0", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -2245,6 +2471,31 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +[[package]] +name = "schemars" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +dependencies = [ + "dyn-clone", + "ref-cast", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d020396d1d138dc19f1165df7545479dcd58d93810dc5d646a16e55abefa80" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.90", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2265,6 +2516,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sem_safe" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9665e92f9b596cf2b20a8c0f55126cfee3514307740a859f1b25bc929e4947" +dependencies = [ + "base64 0.22.1", + "errno", + "getrandom", + "libc", +] + [[package]] name = "serde" version = "1.0.195" @@ -2274,6 +2537,17 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde_derive" version = "1.0.195" @@ -2286,13 +2560,25 @@ dependencies = [ ] [[package]] -name = "serde_json" -version = "1.0.108" +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "serde_json" +version = "1.0.141" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" dependencies = [ "indexmap", "itoa", + "memchr", "ryu", "serde", ] @@ -2336,12 +2622,13 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.10", + "mio 1.0.4", "signal-hook", ] @@ -2354,6 +2641,18 @@ dependencies = [ "libc", ] +[[package]] +name = "signals_receipts" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3adf3706076a9fdded5de487d2a0f378353c240b0dfec9028ba7ab299ca4a14f" +dependencies = [ + "cfg-if", + "errno", + "libc", + "sem_safe", +] + [[package]] name = "signature" version = "1.6.4" @@ -2376,12 +2675,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" -[[package]] -name = "similar" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" - [[package]] name = "simple-logging" version = "2.0.2" @@ -2407,9 +2700,9 @@ checksum = "54ac45299ccbd390721be55b412d41931911f654fa99e2cb8bfb57184b2061fe" [[package]] name = "smallvec" -version = "1.11.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "smawk" @@ -2417,28 +2710,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043" -[[package]] -name = "snapbox" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b831b6e80fbcd2889efa75b185d24005f85981431495f995292b25836519d84" -dependencies = [ - "anstream", - "anstyle", - "normalize-line-endings", - "similar", - "snapbox-macros", -] - -[[package]] -name = "snapbox-macros" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1c4b838b05d15ab22754068cb73500b2f3b07bf09d310e15b27f88160f1de40" -dependencies = [ - "anstream", -] - [[package]] name = "socket2" version = "0.5.5" @@ -2554,6 +2825,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -2622,6 +2899,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "tar" version = "0.4.40" @@ -2642,7 +2930,7 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix", + "rustix 0.38.6", "windows-sys 0.48.0", ] @@ -2653,7 +2941,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2ecb7b6ab8a3eeff2b61770d313d1e971f184e29321785c62ef523b132437b7" dependencies = [ "coolor", - "crossterm", + "crossterm 0.27.0", "thiserror", "xterm-query", ] @@ -2794,6 +3082,16 @@ dependencies = [ "isolang", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -2818,7 +3116,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 0.8.10", "num_cpus", "parking_lot", "pin-project-lite", @@ -3023,18 +3321,18 @@ dependencies = [ "unicode-width 0.2.0", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - [[package]] name = "unicode-display-width" version = "0.3.0" @@ -3106,9 +3404,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", @@ -3116,10 +3414,10 @@ dependencies = [ ] [[package]] -name = "utf8parse" -version = "0.2.1" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "vcpkg" @@ -3316,6 +3614,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-targets" version = "0.48.1" @@ -3437,6 +3744,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "xattr" version = "1.1.1" @@ -3462,6 +3775,30 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.32" @@ -3482,8 +3819,62 @@ dependencies = [ "syn 2.0.90", ] +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", + "synstructure", +] + [[package]] name = "zeroize" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] diff --git a/Cargo.toml b/Cargo.toml index 6410cab0..6ffdba0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,10 @@ required-features = ["bin"] [dependencies] ansi-to-tui = { version = "7.0.0" } anyhow = { version = "1" } -inquire = { version = "0.7.4", default-features = false, features = ["termion", "editor"] } +inquire = { version = "0.7.4", default-features = false, features = [ + "termion", + "editor", +] } lexopt = { version = "0.3.0" } fuzzy-matcher = "0.3.7" homedir = { version = "0.3.3" } @@ -32,12 +35,16 @@ lazy_static = { version = "1.5.0" } libc = { version = "^0.2" } log = { version = "0.4.19" } nom = { version = "^7.1.0" } -radicle = { version = "0.14.0" } -radicle-term = { version = "0.12.0" } -radicle-cli = { version = "0.12.1" } +radicle = { version = "0.16.1" } +radicle-term = { version = "0.13.0" } +radicle-cli = { version = "0.14.0" } radicle-surf = { version = "0.22.0" } -radicle-signals = { version = "0.10.0" } -ratatui = { version = "0.29.0", default-features = false, features = ["all-widgets", "termion", "serde"] } +radicle-signals = { version = "0.11.0" } +ratatui = { version = "0.29.0", default-features = false, features = [ + "all-widgets", + "termion", + "serde", +] } md5 = { version = "0.7.0" } simple-logging = { version = "2.0.2" } serde = { version = "1.0", features = ["derive"] } @@ -50,18 +57,20 @@ textwrap = { version = "0.16.0" } thiserror = { version = "1" } tokio = { version = "1.32.0", features = ["full"] } tokio-stream = { version = "0.1.14" } -tui-textarea = { version = "0.7.0", default-features = false, features = ["termion"] } +tui-textarea = { version = "0.7.0", default-features = false, features = [ + "termion", +] } tui-tree-widget = { version = "0.23.0" } [dev-dependencies] assert_cmd = "2.0.14" predicates = "3.1.0" pretty_assertions = "^1.4.1" -radicle = { version = "0.14.0", features = ["test"]} +radicle = { version = "0.16.1", features = ["test"] } radicle-git-ext = { version = "0.8.0", features = ["serde"] } [dev-dependencies.git2] version = "0.19.0" default-features = false -features = ["vendored-libgit2"] \ No newline at end of file +features = ["vendored-libgit2"] diff --git a/bin/cob/issue.rs b/bin/cob/issue.rs index f27b1f3b..99531926 100644 --- a/bin/cob/issue.rs +++ b/bin/cob/issue.rs @@ -4,10 +4,9 @@ use std::fmt::Write as _; use anyhow::Result; use radicle::cob::issue::{Issue, IssueId}; -use radicle::cob::Label; use radicle::issue::cache::Issues; use radicle::issue::State; -use radicle::prelude::{Did, Signer}; +use radicle::prelude::Did; use radicle::storage::git::Repository; use radicle::Profile; @@ -81,28 +80,6 @@ pub fn all(profile: &Profile, repository: &Repository) -> Result Result> { - let cache = profile.issues(repository)?; - Ok(cache.get(id)?) -} - -#[allow(dead_code)] -pub fn create( - profile: &Profile, - repository: &Repository, - signer: &G, - title: String, - description: String, - labels: &[Label], - assignees: &[Did], -) -> Result { - let mut issues = profile.issues_mut(repository)?; - let issue = issues.create(title, description.trim(), labels, assignees, [], signer)?; - - Ok(*issue.id()) -} - #[cfg(test)] mod tests { use std::str::FromStr; diff --git a/bin/cob/patch.rs b/bin/cob/patch.rs index ebc9da5a..05f647b1 100644 --- a/bin/cob/patch.rs +++ b/bin/cob/patch.rs @@ -4,8 +4,8 @@ use std::fmt::Write as _; use anyhow::Result; use radicle::cob::patch::{Patch, PatchId}; -use radicle::crypto::Signer; use radicle::identity::Did; +use radicle::node::device::Device; use radicle::patch::cache::Patches; use radicle::patch::{Review, ReviewId, Revision, Status}; use radicle::storage::git::Repository; @@ -86,10 +86,10 @@ pub fn find(profile: &Profile, repository: &Repository, id: &PatchId) -> Result< Ok(cache.get(id)?) } -pub fn find_review<'a, G: Signer>( +pub fn find_review<'a, G>( patch: &'a Patch, revision: &Revision, - signer: &G, + signer: &Device, ) -> Option<(ReviewId, &'a Review)> { patch .reviews_of(revision.id()) diff --git a/bin/commands/patch.rs b/bin/commands/patch.rs index 1794ab07..64133d00 100644 --- a/bin/commands/patch.rs +++ b/bin/commands/patch.rs @@ -46,7 +46,7 @@ List options The MODE argument can be 'operation' or 'id'. 'operation' selects a patch id and an operation, whereas 'id' selects a patch id only. - + Other options @@ -93,7 +93,7 @@ impl ReviewOptions { &'a self, patch: &'a Patch, repo: &Repository, - ) -> anyhow::Result<(RevisionId, &Revision)> { + ) -> anyhow::Result<(RevisionId, &'a Revision)> { let revision_id = self .revision_id .as_ref() @@ -322,7 +322,6 @@ mod interface { use radicle::cob; use radicle::cob::ObjectId; - use radicle::crypto::Signer; use radicle::identity::RepoId; use radicle::patch::PatchId; use radicle::patch::Verdict; diff --git a/bin/commands/patch/review.rs b/bin/commands/patch/review.rs index b4b444cc..928af17b 100644 --- a/bin/commands/patch/review.rs +++ b/bin/commands/patch/review.rs @@ -640,7 +640,7 @@ A terminal interface for reviewing patch revisions. Starts a new or resumes an existing review for a given revision (default: latest). When the review is done, it needs to be finalized via `rad patch review --accept | --reject `. - + # Keybindings `←,h` move cursor to the left @@ -688,7 +688,6 @@ mod test { use radicle::cob::cache::NoCache; use radicle::patch::{Cache, PatchMut, Review, ReviewId, Revision, Verdict}; - use radicle::prelude::Signer; use radicle::storage::git::cob::DraftStore; use radicle::storage::git::Repository; diff --git a/bin/test.rs b/bin/test.rs index 15308a4a..2fcd5a42 100644 --- a/bin/test.rs +++ b/bin/test.rs @@ -123,9 +123,11 @@ pub mod fixtures { use anyhow::Result; use radicle::cob::cache::NoCache; - use radicle::crypto::{Signer, Verified}; + use radicle::crypto; + use radicle::crypto::Verified; use radicle::git; use radicle::identity::{RepoId, Visibility}; + use radicle::node::device::Device; use radicle::patch::{Cache, MergeTarget, PatchMut, Patches}; use radicle::rad; use radicle::storage::git::Repository; @@ -232,11 +234,14 @@ fn main() { } /// Create a new repository at the given path, and initialize it into a project. - pub fn project, G: Signer>( + pub fn project, G>( path: P, storage: &Storage, - signer: &G, - ) -> Result<(RepoId, SignedRefs, git2::Repository, git2::Oid), rad::InitError> { + signer: &Device, + ) -> Result<(RepoId, SignedRefs, git2::Repository, git2::Oid), rad::InitError> + where + G: crypto::signature::Signer, + { radicle::storage::git::transport::local::register(storage.clone()); let (working, head) = repository(path); diff --git a/bin/ui/items.rs b/bin/ui/items.rs index 6b8b4073..0c5d196d 100644 --- a/bin/ui/items.rs +++ b/bin/ui/items.rs @@ -1965,7 +1965,6 @@ mod tests { use std::path::PathBuf; use anyhow::Result; - use radicle::crypto::Signer; use crate::test; diff --git a/rust-toolchain b/rust-toolchain index d456f745..c4f7465a 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.80 +1.85