├── .github ├── dependabot.yml └── workflows │ └── rust.yml ├── .gitignore ├── CHANGELOG.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── cargo-clone-core ├── Cargo.toml ├── src │ ├── cloner_builder.rs │ ├── lib.rs │ └── source.rs └── tests │ ├── data │ ├── .cargo-ok │ └── Cargo.toml │ └── test_clone.rs └── cargo-clone ├── Cargo.toml ├── src ├── args.rs └── main.rs └── tests └── test_cli.rs /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "cargo" 4 | # Look for `Cargo.toml` and `Cargo.lock` in the root directory 5 | directory: "/" 6 | # Check for updates every Monday 7 | schedule: 8 | interval: "weekly" 9 | open-pull-requests-limit: 10 10 | - package-ecosystem: "github-actions" 11 | directory: "/" 12 | # Check for updates every Monday 13 | schedule: 14 | interval: "weekly" 15 | open-pull-requests-limit: 10 16 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: [ master, develop ] 6 | pull_request: 7 | branches: [ master, develop ] 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | - name: Build 20 | run: cargo build --locked --verbose 21 | - name: Run tests 22 | run: cargo test --verbose 23 | - name: Check formatting 24 | run: cargo fmt -- --check 25 | - name: Run clippy 26 | run: cargo clippy --all-targets -- -D warnings 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | target-install 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [1.2.4] - Unreleased 2 | ### Changed 3 | - Update dependencies 4 | - Update Cargo to 0.81.0 (cargo-clone-core breaking change) 5 | 6 | ## [1.2.3] - 2024-08-24 7 | ### Changed 8 | - Update dependencies 9 | - Specify workspace resolver to clear warnings (#133) by @eopb 10 | - Update time to fix build failures on rust 1.80.0 (#134) by @eopb 11 | 12 | ## [1.2.1] - 2023-12-13 13 | ### Changed 14 | - fix: log full error (#68) by @MarcoIeni 15 | - Show cli usage when no arguments are provided. (#93) by @RyanAvella 16 | - Update Cargo and other dependencies due to security concerns 17 | - Use matching versions for cargo-clone and cargo-clone-core 18 | 19 | ## [1.2.0] - 2023-01-23 20 | ### Changed 21 | - Update to clap v4 (#63) by @MarcoIeni 22 | - Improve cargo_clone_core API (#62) by @MarcoIeni 23 | - Invalidate cache once (#58) @MarcoIeni 24 | - Update cargo to v0.66 (#55)@MarcoIeni 25 | 26 | ## [1.1.0] - 2022-10-08 27 | ### Added 28 | - Expose cargo's vendored-openssl feature by @dtolnay in https://github.com/JanLikar/cargo-clone/pull/49 29 | - feat: extract library by @MarcoIeni in https://github.com/JanLikar/cargo-clone/pull/50 30 | - Run clippy on tests by @MarcoIeni in https://github.com/JanLikar/cargo-clone/pull/51 31 | - feat: re-export cargo types by @MarcoIeni in https://github.com/JanLikar/cargo-clone/pull/52 32 | 33 | ## [1.0.1] - 2022-04-26 34 | ### Changed 35 | - Dependencies were updated. 36 | 37 | ## [1.0.0] - 2021-12-27 38 | ### Added 39 | - Can now clone a package from a git repository specified in package's Cargo.toml file using `--git`. 40 | - Test coverage was improved significantly. 41 | 42 | ### Changed 43 | - clap.rs is used instead of Docopt. 44 | - `--prefix` is now a positional argument named `directory`. 45 | - `--alt-registry` is now `--registry`. 46 | - `--registry-url` is now `--index`. 47 | - `--vers` is removed in favor of inline version specs: `cargo-clone@1.0.0`. 48 | - Several other minimal CLI changes. 49 | 50 | ### Removed 51 | - Removed option to clone from git repo directly. This was deemed out-of-scope. 52 | - Removed dependency on Serde. 53 | - Removed `--path` as it is unneeded. 54 | 55 | ## [0.2.0] - 2021-12-25 56 | - Fix clone_directory. 57 | - Fix destination path creation. 58 | - --vers is now parsed as a version requirement and uses precise matching by default. 59 | - Dependencies updated 60 | 61 | Thank you @jsha and @pravic! 62 | 63 | ## [0.1.4] - 2020-01-28 64 | - Add flags for local and remote registries to clone from. 65 | - Update dependencies. 66 | - Remove dependency on rustc-serialize. 67 | - Allow cloning multiple crates at once. 68 | - Fix issue with parsing Cargo.toml. 69 | 70 | Thank you @dralley, @Phosphorus15, and @ErichDonGubler! 71 | 72 | ## [0.1.3] - 2018-10-22 73 | - Update dependencies. 74 | Thank you, @dpc! 75 | 76 | ## [0.1.2] - 2017-04-28 77 | ### Added 78 | - cargo-clone is now able to clone from git repositories and local directories. 79 | Thanks to @crazymerlyn! 80 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "adler2" 7 | version = "2.0.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 10 | 11 | [[package]] 12 | name = "ahash" 13 | version = "0.8.11" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 16 | dependencies = [ 17 | "cfg-if", 18 | "once_cell", 19 | "version_check", 20 | "zerocopy", 21 | ] 22 | 23 | [[package]] 24 | name = "aho-corasick" 25 | version = "1.1.3" 26 | source = "registry+https://github.com/rust-lang/crates.io-index" 27 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 28 | dependencies = [ 29 | "memchr", 30 | ] 31 | 32 | [[package]] 33 | name = "allocator-api2" 34 | version = "0.2.21" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 37 | 38 | [[package]] 39 | name = "annotate-snippets" 40 | version = "0.11.5" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" 43 | dependencies = [ 44 | "anstyle", 45 | "unicode-width", 46 | ] 47 | 48 | [[package]] 49 | name = "anstream" 50 | version = "0.6.18" 51 | source = "registry+https://github.com/rust-lang/crates.io-index" 52 | checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" 53 | dependencies = [ 54 | "anstyle", 55 | "anstyle-parse", 56 | "anstyle-query", 57 | "anstyle-wincon", 58 | "colorchoice", 59 | "is_terminal_polyfill", 60 | "utf8parse", 61 | ] 62 | 63 | [[package]] 64 | name = "anstyle" 65 | version = "1.0.10" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" 68 | 69 | [[package]] 70 | name = "anstyle-parse" 71 | version = "0.2.6" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" 74 | dependencies = [ 75 | "utf8parse", 76 | ] 77 | 78 | [[package]] 79 | name = "anstyle-query" 80 | version = "1.1.2" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" 83 | dependencies = [ 84 | "windows-sys 0.59.0", 85 | ] 86 | 87 | [[package]] 88 | name = "anstyle-wincon" 89 | version = "3.0.6" 90 | source = "registry+https://github.com/rust-lang/crates.io-index" 91 | checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" 92 | dependencies = [ 93 | "anstyle", 94 | "windows-sys 0.59.0", 95 | ] 96 | 97 | [[package]] 98 | name = "anyhow" 99 | version = "1.0.98" 100 | source = "registry+https://github.com/rust-lang/crates.io-index" 101 | checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" 102 | 103 | [[package]] 104 | name = "arc-swap" 105 | version = "1.7.1" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 108 | 109 | [[package]] 110 | name = "arrayref" 111 | version = "0.3.9" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" 114 | 115 | [[package]] 116 | name = "arrayvec" 117 | version = "0.7.6" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 120 | 121 | [[package]] 122 | name = "assert_cmd" 123 | version = "2.0.17" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | checksum = "2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66" 126 | dependencies = [ 127 | "anstyle", 128 | "bstr", 129 | "doc-comment", 130 | "libc", 131 | "predicates", 132 | "predicates-core", 133 | "predicates-tree", 134 | "wait-timeout", 135 | ] 136 | 137 | [[package]] 138 | name = "autocfg" 139 | version = "1.4.0" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 142 | 143 | [[package]] 144 | name = "base16ct" 145 | version = "0.2.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 148 | 149 | [[package]] 150 | name = "base64" 151 | version = "0.22.1" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 154 | 155 | [[package]] 156 | name = "base64ct" 157 | version = "1.6.0" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 160 | 161 | [[package]] 162 | name = "bitflags" 163 | version = "2.7.0" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "1be3f42a67d6d345ecd59f675f3f012d6974981560836e938c22b424b85ce1be" 166 | 167 | [[package]] 168 | name = "bitmaps" 169 | version = "2.1.0" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" 172 | dependencies = [ 173 | "typenum", 174 | ] 175 | 176 | [[package]] 177 | name = "blake3" 178 | version = "1.5.5" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" 181 | dependencies = [ 182 | "arrayref", 183 | "arrayvec", 184 | "cc", 185 | "cfg-if", 186 | "constant_time_eq", 187 | ] 188 | 189 | [[package]] 190 | name = "block-buffer" 191 | version = "0.10.4" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 194 | dependencies = [ 195 | "generic-array", 196 | ] 197 | 198 | [[package]] 199 | name = "bstr" 200 | version = "1.11.3" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" 203 | dependencies = [ 204 | "memchr", 205 | "regex-automata 0.4.9", 206 | "serde", 207 | ] 208 | 209 | [[package]] 210 | name = "bumpalo" 211 | version = "3.16.0" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 214 | 215 | [[package]] 216 | name = "byteorder" 217 | version = "1.5.0" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 220 | 221 | [[package]] 222 | name = "bytes" 223 | version = "1.9.0" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" 226 | 227 | [[package]] 228 | name = "cargo" 229 | version = "0.88.0" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "e3266d7f10870d970f22fd244b5d4bb017f723247e6743f2283f6fe63a4f6084" 232 | dependencies = [ 233 | "annotate-snippets", 234 | "anstream", 235 | "anstyle", 236 | "anyhow", 237 | "base64", 238 | "blake3", 239 | "cargo-credential", 240 | "cargo-credential-libsecret", 241 | "cargo-credential-macos-keychain", 242 | "cargo-credential-wincred", 243 | "cargo-platform", 244 | "cargo-util", 245 | "cargo-util-schemas", 246 | "clap", 247 | "clap_complete", 248 | "color-print", 249 | "crates-io", 250 | "curl", 251 | "curl-sys", 252 | "filetime", 253 | "flate2", 254 | "git2", 255 | "git2-curl", 256 | "gix", 257 | "glob", 258 | "hex", 259 | "hmac", 260 | "home", 261 | "http-auth", 262 | "ignore", 263 | "im-rc", 264 | "indexmap", 265 | "itertools", 266 | "jiff 0.2.14", 267 | "jobserver", 268 | "lazycell", 269 | "libc", 270 | "libgit2-sys", 271 | "memchr", 272 | "opener", 273 | "openssl", 274 | "os_info", 275 | "pasetors", 276 | "pathdiff", 277 | "rand", 278 | "regex", 279 | "rusqlite", 280 | "rustc-hash", 281 | "rustc-stable-hash", 282 | "rustfix", 283 | "same-file", 284 | "semver", 285 | "serde", 286 | "serde-untagged", 287 | "serde_ignored", 288 | "serde_json", 289 | "sha1", 290 | "shell-escape", 291 | "supports-hyperlinks", 292 | "supports-unicode", 293 | "tar", 294 | "tempfile", 295 | "thiserror 2.0.11", 296 | "time", 297 | "toml", 298 | "toml_edit", 299 | "tracing", 300 | "tracing-chrome", 301 | "tracing-subscriber", 302 | "unicase", 303 | "unicode-width", 304 | "url", 305 | "walkdir", 306 | "windows-sys 0.59.0", 307 | ] 308 | 309 | [[package]] 310 | name = "cargo-clone" 311 | version = "1.2.4" 312 | dependencies = [ 313 | "anyhow", 314 | "assert_cmd", 315 | "cargo", 316 | "cargo-clone-core", 317 | "clap", 318 | "tempfile", 319 | ] 320 | 321 | [[package]] 322 | name = "cargo-clone-core" 323 | version = "0.2.4" 324 | dependencies = [ 325 | "anyhow", 326 | "cargo", 327 | "semver", 328 | "tempfile", 329 | "url", 330 | "walkdir", 331 | ] 332 | 333 | [[package]] 334 | name = "cargo-credential" 335 | version = "0.4.6" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "3a3e7c625670eacbefd48f552588c491eccc79a85a96898af13af7b312d1c4cd" 338 | dependencies = [ 339 | "anyhow", 340 | "libc", 341 | "serde", 342 | "serde_json", 343 | "thiserror 1.0.69", 344 | "time", 345 | "windows-sys 0.52.0", 346 | ] 347 | 348 | [[package]] 349 | name = "cargo-credential-libsecret" 350 | version = "0.4.13" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "02d4e8e593dd3967cf90d6ae8e0e820abbb9ba168c4015dc04d90abc80477b8b" 353 | dependencies = [ 354 | "anyhow", 355 | "cargo-credential", 356 | "libloading", 357 | ] 358 | 359 | [[package]] 360 | name = "cargo-credential-macos-keychain" 361 | version = "0.4.13" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "4037e5af4bd682580c82143a0a22d9fd2ae6e57ee8b9ea7110dabcf1160828cc" 364 | dependencies = [ 365 | "cargo-credential", 366 | "security-framework", 367 | ] 368 | 369 | [[package]] 370 | name = "cargo-credential-wincred" 371 | version = "0.4.13" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "320491fd2d43703fe8685cc844af75eba650d32f51a26a9f37ec8fd0d426a738" 374 | dependencies = [ 375 | "cargo-credential", 376 | "windows-sys 0.59.0", 377 | ] 378 | 379 | [[package]] 380 | name = "cargo-platform" 381 | version = "0.2.0" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4" 384 | dependencies = [ 385 | "serde", 386 | ] 387 | 388 | [[package]] 389 | name = "cargo-util" 390 | version = "0.2.20" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "d767bc85f367f6483a6072430b56f5c0d6ee7636751a21a800526d0711753d76" 393 | dependencies = [ 394 | "anyhow", 395 | "core-foundation", 396 | "filetime", 397 | "hex", 398 | "ignore", 399 | "jobserver", 400 | "libc", 401 | "miow", 402 | "same-file", 403 | "sha2", 404 | "shell-escape", 405 | "tempfile", 406 | "tracing", 407 | "walkdir", 408 | "windows-sys 0.59.0", 409 | ] 410 | 411 | [[package]] 412 | name = "cargo-util-schemas" 413 | version = "0.8.1" 414 | source = "registry+https://github.com/rust-lang/crates.io-index" 415 | checksum = "ea8b01266e95c3cf839fe626e651fa36a9171033caa917a773d7a0ba1d5ce6be" 416 | dependencies = [ 417 | "semver", 418 | "serde", 419 | "serde-untagged", 420 | "serde-value", 421 | "thiserror 2.0.11", 422 | "toml", 423 | "unicode-xid", 424 | "url", 425 | ] 426 | 427 | [[package]] 428 | name = "cc" 429 | version = "1.2.7" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" 432 | dependencies = [ 433 | "jobserver", 434 | "libc", 435 | "shlex", 436 | ] 437 | 438 | [[package]] 439 | name = "cfg-if" 440 | version = "1.0.0" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 443 | 444 | [[package]] 445 | name = "clap" 446 | version = "4.5.39" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" 449 | dependencies = [ 450 | "clap_builder", 451 | "clap_derive", 452 | ] 453 | 454 | [[package]] 455 | name = "clap_builder" 456 | version = "4.5.39" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" 459 | dependencies = [ 460 | "anstream", 461 | "anstyle", 462 | "clap_lex", 463 | "strsim", 464 | "terminal_size", 465 | ] 466 | 467 | [[package]] 468 | name = "clap_complete" 469 | version = "4.5.51" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "8d2267df7f3c8e74e38268887ea5235d4dfadd39bfff2d56ab82d61776be355e" 472 | dependencies = [ 473 | "clap", 474 | "clap_lex", 475 | "is_executable", 476 | "shlex", 477 | ] 478 | 479 | [[package]] 480 | name = "clap_derive" 481 | version = "4.5.32" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" 484 | dependencies = [ 485 | "heck", 486 | "proc-macro2", 487 | "quote", 488 | "syn", 489 | ] 490 | 491 | [[package]] 492 | name = "clap_lex" 493 | version = "0.7.4" 494 | source = "registry+https://github.com/rust-lang/crates.io-index" 495 | checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" 496 | 497 | [[package]] 498 | name = "clru" 499 | version = "0.6.2" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" 502 | 503 | [[package]] 504 | name = "color-print" 505 | version = "0.3.7" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "3aa954171903797d5623e047d9ab69d91b493657917bdfb8c2c80ecaf9cdb6f4" 508 | dependencies = [ 509 | "color-print-proc-macro", 510 | ] 511 | 512 | [[package]] 513 | name = "color-print-proc-macro" 514 | version = "0.3.7" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | checksum = "692186b5ebe54007e45a59aea47ece9eb4108e141326c304cdc91699a7118a22" 517 | dependencies = [ 518 | "nom", 519 | "proc-macro2", 520 | "quote", 521 | "syn", 522 | ] 523 | 524 | [[package]] 525 | name = "colorchoice" 526 | version = "1.0.3" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" 529 | 530 | [[package]] 531 | name = "const-oid" 532 | version = "0.9.6" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 535 | 536 | [[package]] 537 | name = "constant_time_eq" 538 | version = "0.3.1" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" 541 | 542 | [[package]] 543 | name = "core-foundation" 544 | version = "0.10.0" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" 547 | dependencies = [ 548 | "core-foundation-sys", 549 | "libc", 550 | ] 551 | 552 | [[package]] 553 | name = "core-foundation-sys" 554 | version = "0.8.7" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 557 | 558 | [[package]] 559 | name = "cpufeatures" 560 | version = "0.2.16" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" 563 | dependencies = [ 564 | "libc", 565 | ] 566 | 567 | [[package]] 568 | name = "crates-io" 569 | version = "0.40.10" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "9c15b946f2bbd53f5be858ed02fcacfeb3646f3ca67b24defc276a01edd10de6" 572 | dependencies = [ 573 | "curl", 574 | "percent-encoding", 575 | "serde", 576 | "serde_json", 577 | "thiserror 2.0.11", 578 | "url", 579 | ] 580 | 581 | [[package]] 582 | name = "crc32fast" 583 | version = "1.4.2" 584 | source = "registry+https://github.com/rust-lang/crates.io-index" 585 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 586 | dependencies = [ 587 | "cfg-if", 588 | ] 589 | 590 | [[package]] 591 | name = "crossbeam-channel" 592 | version = "0.5.15" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 595 | dependencies = [ 596 | "crossbeam-utils", 597 | ] 598 | 599 | [[package]] 600 | name = "crossbeam-deque" 601 | version = "0.8.6" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 604 | dependencies = [ 605 | "crossbeam-epoch", 606 | "crossbeam-utils", 607 | ] 608 | 609 | [[package]] 610 | name = "crossbeam-epoch" 611 | version = "0.9.18" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 614 | dependencies = [ 615 | "crossbeam-utils", 616 | ] 617 | 618 | [[package]] 619 | name = "crossbeam-utils" 620 | version = "0.8.21" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 623 | 624 | [[package]] 625 | name = "crypto-bigint" 626 | version = "0.5.5" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 629 | dependencies = [ 630 | "generic-array", 631 | "rand_core 0.6.4", 632 | "subtle", 633 | "zeroize", 634 | ] 635 | 636 | [[package]] 637 | name = "crypto-common" 638 | version = "0.1.6" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 641 | dependencies = [ 642 | "generic-array", 643 | "typenum", 644 | ] 645 | 646 | [[package]] 647 | name = "ct-codecs" 648 | version = "1.1.1" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "f3b7eb4404b8195a9abb6356f4ac07d8ba267045c8d6d220ac4dc992e6cc75df" 651 | 652 | [[package]] 653 | name = "curl" 654 | version = "0.4.47" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" 657 | dependencies = [ 658 | "curl-sys", 659 | "libc", 660 | "openssl-probe", 661 | "openssl-sys", 662 | "schannel", 663 | "socket2", 664 | "windows-sys 0.52.0", 665 | ] 666 | 667 | [[package]] 668 | name = "curl-sys" 669 | version = "0.4.80+curl-8.12.1" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "55f7df2eac63200c3ab25bde3b2268ef2ee56af3d238e76d61f01c3c49bff734" 672 | dependencies = [ 673 | "cc", 674 | "libc", 675 | "libnghttp2-sys", 676 | "libz-sys", 677 | "openssl-sys", 678 | "pkg-config", 679 | "vcpkg", 680 | "windows-sys 0.52.0", 681 | ] 682 | 683 | [[package]] 684 | name = "dbus" 685 | version = "0.9.7" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" 688 | dependencies = [ 689 | "libc", 690 | "libdbus-sys", 691 | "winapi", 692 | ] 693 | 694 | [[package]] 695 | name = "der" 696 | version = "0.7.9" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" 699 | dependencies = [ 700 | "const-oid", 701 | "pem-rfc7468", 702 | "zeroize", 703 | ] 704 | 705 | [[package]] 706 | name = "deranged" 707 | version = "0.3.11" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 710 | dependencies = [ 711 | "powerfmt", 712 | "serde", 713 | ] 714 | 715 | [[package]] 716 | name = "difflib" 717 | version = "0.4.0" 718 | source = "registry+https://github.com/rust-lang/crates.io-index" 719 | checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" 720 | 721 | [[package]] 722 | name = "digest" 723 | version = "0.10.7" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 726 | dependencies = [ 727 | "block-buffer", 728 | "const-oid", 729 | "crypto-common", 730 | "subtle", 731 | ] 732 | 733 | [[package]] 734 | name = "displaydoc" 735 | version = "0.2.5" 736 | source = "registry+https://github.com/rust-lang/crates.io-index" 737 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 738 | dependencies = [ 739 | "proc-macro2", 740 | "quote", 741 | "syn", 742 | ] 743 | 744 | [[package]] 745 | name = "doc-comment" 746 | version = "0.3.3" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" 749 | 750 | [[package]] 751 | name = "dunce" 752 | version = "1.0.5" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 755 | 756 | [[package]] 757 | name = "ecdsa" 758 | version = "0.16.9" 759 | source = "registry+https://github.com/rust-lang/crates.io-index" 760 | checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 761 | dependencies = [ 762 | "der", 763 | "digest", 764 | "elliptic-curve", 765 | "rfc6979", 766 | "signature", 767 | "spki", 768 | ] 769 | 770 | [[package]] 771 | name = "ed25519-compact" 772 | version = "2.1.1" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | checksum = "e9b3460f44bea8cd47f45a0c70892f1eff856d97cd55358b2f73f663789f6190" 775 | dependencies = [ 776 | "getrandom 0.2.15", 777 | ] 778 | 779 | [[package]] 780 | name = "either" 781 | version = "1.13.0" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 784 | 785 | [[package]] 786 | name = "elliptic-curve" 787 | version = "0.13.8" 788 | source = "registry+https://github.com/rust-lang/crates.io-index" 789 | checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 790 | dependencies = [ 791 | "base16ct", 792 | "crypto-bigint", 793 | "digest", 794 | "ff", 795 | "generic-array", 796 | "group", 797 | "hkdf", 798 | "pem-rfc7468", 799 | "pkcs8", 800 | "rand_core 0.6.4", 801 | "sec1", 802 | "subtle", 803 | "zeroize", 804 | ] 805 | 806 | [[package]] 807 | name = "encoding_rs" 808 | version = "0.8.35" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 811 | dependencies = [ 812 | "cfg-if", 813 | ] 814 | 815 | [[package]] 816 | name = "equivalent" 817 | version = "1.0.1" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 820 | 821 | [[package]] 822 | name = "erased-serde" 823 | version = "0.4.5" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" 826 | dependencies = [ 827 | "serde", 828 | "typeid", 829 | ] 830 | 831 | [[package]] 832 | name = "errno" 833 | version = "0.3.10" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 836 | dependencies = [ 837 | "libc", 838 | "windows-sys 0.59.0", 839 | ] 840 | 841 | [[package]] 842 | name = "fallible-iterator" 843 | version = "0.3.0" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" 846 | 847 | [[package]] 848 | name = "fallible-streaming-iterator" 849 | version = "0.1.9" 850 | source = "registry+https://github.com/rust-lang/crates.io-index" 851 | checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" 852 | 853 | [[package]] 854 | name = "faster-hex" 855 | version = "0.9.0" 856 | source = "registry+https://github.com/rust-lang/crates.io-index" 857 | checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" 858 | dependencies = [ 859 | "serde", 860 | ] 861 | 862 | [[package]] 863 | name = "fastrand" 864 | version = "2.3.0" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 867 | 868 | [[package]] 869 | name = "ff" 870 | version = "0.13.0" 871 | source = "registry+https://github.com/rust-lang/crates.io-index" 872 | checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" 873 | dependencies = [ 874 | "rand_core 0.6.4", 875 | "subtle", 876 | ] 877 | 878 | [[package]] 879 | name = "fiat-crypto" 880 | version = "0.2.9" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 883 | 884 | [[package]] 885 | name = "filetime" 886 | version = "0.2.25" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" 889 | dependencies = [ 890 | "cfg-if", 891 | "libc", 892 | "libredox", 893 | "windows-sys 0.59.0", 894 | ] 895 | 896 | [[package]] 897 | name = "flate2" 898 | version = "1.0.35" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" 901 | dependencies = [ 902 | "crc32fast", 903 | "libz-sys", 904 | "miniz_oxide", 905 | ] 906 | 907 | [[package]] 908 | name = "fnv" 909 | version = "1.0.7" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 912 | 913 | [[package]] 914 | name = "foldhash" 915 | version = "0.1.5" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 918 | 919 | [[package]] 920 | name = "foreign-types" 921 | version = "0.3.2" 922 | source = "registry+https://github.com/rust-lang/crates.io-index" 923 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 924 | dependencies = [ 925 | "foreign-types-shared", 926 | ] 927 | 928 | [[package]] 929 | name = "foreign-types-shared" 930 | version = "0.1.1" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 933 | 934 | [[package]] 935 | name = "form_urlencoded" 936 | version = "1.2.1" 937 | source = "registry+https://github.com/rust-lang/crates.io-index" 938 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 939 | dependencies = [ 940 | "percent-encoding", 941 | ] 942 | 943 | [[package]] 944 | name = "generic-array" 945 | version = "0.14.7" 946 | source = "registry+https://github.com/rust-lang/crates.io-index" 947 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 948 | dependencies = [ 949 | "typenum", 950 | "version_check", 951 | "zeroize", 952 | ] 953 | 954 | [[package]] 955 | name = "getrandom" 956 | version = "0.2.15" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 959 | dependencies = [ 960 | "cfg-if", 961 | "js-sys", 962 | "libc", 963 | "wasi 0.11.0+wasi-snapshot-preview1", 964 | "wasm-bindgen", 965 | ] 966 | 967 | [[package]] 968 | name = "getrandom" 969 | version = "0.3.2" 970 | source = "registry+https://github.com/rust-lang/crates.io-index" 971 | checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" 972 | dependencies = [ 973 | "cfg-if", 974 | "js-sys", 975 | "libc", 976 | "r-efi", 977 | "wasi 0.14.2+wasi-0.2.4", 978 | "wasm-bindgen", 979 | ] 980 | 981 | [[package]] 982 | name = "git2" 983 | version = "0.20.2" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" 986 | dependencies = [ 987 | "bitflags", 988 | "libc", 989 | "libgit2-sys", 990 | "log", 991 | "openssl-probe", 992 | "openssl-sys", 993 | "url", 994 | ] 995 | 996 | [[package]] 997 | name = "git2-curl" 998 | version = "0.21.0" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "be8dcabbc09ece4d30a9aa983d5804203b7e2f8054a171f792deff59b56d31fa" 1001 | dependencies = [ 1002 | "curl", 1003 | "git2", 1004 | "log", 1005 | "url", 1006 | ] 1007 | 1008 | [[package]] 1009 | name = "gix" 1010 | version = "0.70.0" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | checksum = "736f14636705f3a56ea52b553e67282519418d9a35bb1e90b3a9637a00296b68" 1013 | dependencies = [ 1014 | "gix-actor", 1015 | "gix-attributes", 1016 | "gix-command", 1017 | "gix-commitgraph", 1018 | "gix-config", 1019 | "gix-credentials", 1020 | "gix-date", 1021 | "gix-diff", 1022 | "gix-dir", 1023 | "gix-discover", 1024 | "gix-features", 1025 | "gix-filter", 1026 | "gix-fs", 1027 | "gix-glob", 1028 | "gix-hash", 1029 | "gix-hashtable", 1030 | "gix-ignore", 1031 | "gix-index", 1032 | "gix-lock", 1033 | "gix-negotiate", 1034 | "gix-object", 1035 | "gix-odb", 1036 | "gix-pack", 1037 | "gix-path", 1038 | "gix-pathspec", 1039 | "gix-prompt", 1040 | "gix-protocol", 1041 | "gix-ref", 1042 | "gix-refspec", 1043 | "gix-revision", 1044 | "gix-revwalk", 1045 | "gix-sec", 1046 | "gix-shallow", 1047 | "gix-submodule", 1048 | "gix-tempfile", 1049 | "gix-trace", 1050 | "gix-transport", 1051 | "gix-traverse", 1052 | "gix-url", 1053 | "gix-utils", 1054 | "gix-validate", 1055 | "gix-worktree", 1056 | "once_cell", 1057 | "prodash", 1058 | "smallvec", 1059 | "thiserror 2.0.11", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "gix-actor" 1064 | version = "0.33.2" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "20018a1a6332e065f1fcc8305c1c932c6b8c9985edea2284b3c79dc6fa3ee4b2" 1067 | dependencies = [ 1068 | "bstr", 1069 | "gix-date", 1070 | "gix-utils", 1071 | "itoa", 1072 | "thiserror 2.0.11", 1073 | "winnow 0.6.22", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "gix-attributes" 1078 | version = "0.24.0" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "f151000bf662ef5f641eca6102d942ee31ace80f271a3ef642e99776ce6ddb38" 1081 | dependencies = [ 1082 | "bstr", 1083 | "gix-glob", 1084 | "gix-path", 1085 | "gix-quote", 1086 | "gix-trace", 1087 | "kstring", 1088 | "smallvec", 1089 | "thiserror 2.0.11", 1090 | "unicode-bom", 1091 | ] 1092 | 1093 | [[package]] 1094 | name = "gix-bitmap" 1095 | version = "0.2.14" 1096 | source = "registry+https://github.com/rust-lang/crates.io-index" 1097 | checksum = "b1db9765c69502650da68f0804e3dc2b5f8ccc6a2d104ca6c85bc40700d37540" 1098 | dependencies = [ 1099 | "thiserror 2.0.11", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "gix-chunk" 1104 | version = "0.4.11" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "0b1f1d8764958699dc764e3f727cef280ff4d1bd92c107bbf8acd85b30c1bd6f" 1107 | dependencies = [ 1108 | "thiserror 2.0.11", 1109 | ] 1110 | 1111 | [[package]] 1112 | name = "gix-command" 1113 | version = "0.4.1" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | checksum = "cb410b84d6575db45e62025a9118bdbf4d4b099ce7575a76161e898d9ca98df1" 1116 | dependencies = [ 1117 | "bstr", 1118 | "gix-path", 1119 | "gix-trace", 1120 | "shell-words", 1121 | ] 1122 | 1123 | [[package]] 1124 | name = "gix-commitgraph" 1125 | version = "0.26.0" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "e23a8ec2d8a16026a10dafdb6ed51bcfd08f5d97f20fa52e200bc50cb72e4877" 1128 | dependencies = [ 1129 | "bstr", 1130 | "gix-chunk", 1131 | "gix-features", 1132 | "gix-hash", 1133 | "memmap2", 1134 | "thiserror 2.0.11", 1135 | ] 1136 | 1137 | [[package]] 1138 | name = "gix-config" 1139 | version = "0.43.0" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | checksum = "377c1efd2014d5d469e0b3cd2952c8097bce9828f634e04d5665383249f1d9e9" 1142 | dependencies = [ 1143 | "bstr", 1144 | "gix-config-value", 1145 | "gix-features", 1146 | "gix-glob", 1147 | "gix-path", 1148 | "gix-ref", 1149 | "gix-sec", 1150 | "memchr", 1151 | "once_cell", 1152 | "smallvec", 1153 | "thiserror 2.0.11", 1154 | "unicode-bom", 1155 | "winnow 0.6.22", 1156 | ] 1157 | 1158 | [[package]] 1159 | name = "gix-config-value" 1160 | version = "0.14.11" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "11365144ef93082f3403471dbaa94cfe4b5e72743bdb9560719a251d439f4cee" 1163 | dependencies = [ 1164 | "bitflags", 1165 | "bstr", 1166 | "gix-path", 1167 | "libc", 1168 | "thiserror 2.0.11", 1169 | ] 1170 | 1171 | [[package]] 1172 | name = "gix-credentials" 1173 | version = "0.27.0" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "cf950f9ee1690bb9c4388b5152baa8a9f41ad61e5cf1ba0ec8c207b08dab9e45" 1176 | dependencies = [ 1177 | "bstr", 1178 | "gix-command", 1179 | "gix-config-value", 1180 | "gix-path", 1181 | "gix-prompt", 1182 | "gix-sec", 1183 | "gix-trace", 1184 | "gix-url", 1185 | "thiserror 2.0.11", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "gix-date" 1190 | version = "0.9.3" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "c57c477b645ee248b173bb1176b52dd528872f12c50375801a58aaf5ae91113f" 1193 | dependencies = [ 1194 | "bstr", 1195 | "itoa", 1196 | "jiff 0.1.21", 1197 | "thiserror 2.0.11", 1198 | ] 1199 | 1200 | [[package]] 1201 | name = "gix-diff" 1202 | version = "0.50.0" 1203 | source = "registry+https://github.com/rust-lang/crates.io-index" 1204 | checksum = "62afb7f4ca0acdf4e9dad92065b2eb1bf2993bcc5014b57bc796e3a365b17c4d" 1205 | dependencies = [ 1206 | "bstr", 1207 | "gix-hash", 1208 | "gix-object", 1209 | "thiserror 2.0.11", 1210 | ] 1211 | 1212 | [[package]] 1213 | name = "gix-dir" 1214 | version = "0.12.0" 1215 | source = "registry+https://github.com/rust-lang/crates.io-index" 1216 | checksum = "c1d78db3927a12f7d1b788047b84efacaab03ef25738bd1c77856ad8966bd57b" 1217 | dependencies = [ 1218 | "bstr", 1219 | "gix-discover", 1220 | "gix-fs", 1221 | "gix-ignore", 1222 | "gix-index", 1223 | "gix-object", 1224 | "gix-path", 1225 | "gix-pathspec", 1226 | "gix-trace", 1227 | "gix-utils", 1228 | "gix-worktree", 1229 | "thiserror 2.0.11", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "gix-discover" 1234 | version = "0.38.0" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "d0c2414bdf04064e0f5a5aa029dfda1e663cf9a6c4bfc8759f2d369299bb65d8" 1237 | dependencies = [ 1238 | "bstr", 1239 | "dunce", 1240 | "gix-fs", 1241 | "gix-hash", 1242 | "gix-path", 1243 | "gix-ref", 1244 | "gix-sec", 1245 | "thiserror 2.0.11", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "gix-features" 1250 | version = "0.40.0" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "8bfdd4838a8d42bd482c9f0cb526411d003ee94cc7c7b08afe5007329c71d554" 1253 | dependencies = [ 1254 | "bytes", 1255 | "crc32fast", 1256 | "crossbeam-channel", 1257 | "flate2", 1258 | "gix-hash", 1259 | "gix-trace", 1260 | "gix-utils", 1261 | "libc", 1262 | "once_cell", 1263 | "parking_lot", 1264 | "prodash", 1265 | "sha1_smol", 1266 | "thiserror 2.0.11", 1267 | "walkdir", 1268 | ] 1269 | 1270 | [[package]] 1271 | name = "gix-filter" 1272 | version = "0.17.0" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "bdcc36cd7dbc63ed0ec3558645886553d1afd3cd09daa5efb9cba9cceb942bbb" 1275 | dependencies = [ 1276 | "bstr", 1277 | "encoding_rs", 1278 | "gix-attributes", 1279 | "gix-command", 1280 | "gix-hash", 1281 | "gix-object", 1282 | "gix-packetline-blocking", 1283 | "gix-path", 1284 | "gix-quote", 1285 | "gix-trace", 1286 | "gix-utils", 1287 | "smallvec", 1288 | "thiserror 2.0.11", 1289 | ] 1290 | 1291 | [[package]] 1292 | name = "gix-fs" 1293 | version = "0.13.0" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "182e7fa7bfdf44ffb7cfe7451b373cdf1e00870ac9a488a49587a110c562063d" 1296 | dependencies = [ 1297 | "fastrand", 1298 | "gix-features", 1299 | "gix-utils", 1300 | ] 1301 | 1302 | [[package]] 1303 | name = "gix-glob" 1304 | version = "0.18.0" 1305 | source = "registry+https://github.com/rust-lang/crates.io-index" 1306 | checksum = "4e9c7249fa0a78f9b363aa58323db71e0a6161fd69860ed6f48dedf0ef3a314e" 1307 | dependencies = [ 1308 | "bitflags", 1309 | "bstr", 1310 | "gix-features", 1311 | "gix-path", 1312 | ] 1313 | 1314 | [[package]] 1315 | name = "gix-hash" 1316 | version = "0.16.0" 1317 | source = "registry+https://github.com/rust-lang/crates.io-index" 1318 | checksum = "e81c5ec48649b1821b3ed066a44efb95f1a268b35c1d91295e61252539fbe9f8" 1319 | dependencies = [ 1320 | "faster-hex", 1321 | "thiserror 2.0.11", 1322 | ] 1323 | 1324 | [[package]] 1325 | name = "gix-hashtable" 1326 | version = "0.7.0" 1327 | source = "registry+https://github.com/rust-lang/crates.io-index" 1328 | checksum = "189130bc372accd02e0520dc5ab1cef318dcc2bc829b76ab8d84bbe90ac212d1" 1329 | dependencies = [ 1330 | "gix-hash", 1331 | "hashbrown 0.14.5", 1332 | "parking_lot", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "gix-ignore" 1337 | version = "0.13.0" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "4f529dcb80bf9855c0a7c49f0ac588df6d6952d63a63fefc254b9c869d2cdf6f" 1340 | dependencies = [ 1341 | "bstr", 1342 | "gix-glob", 1343 | "gix-path", 1344 | "gix-trace", 1345 | "unicode-bom", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "gix-index" 1350 | version = "0.38.0" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "acd12e3626879369310fffe2ac61acc828613ef656b50c4ea984dd59d7dc85d8" 1353 | dependencies = [ 1354 | "bitflags", 1355 | "bstr", 1356 | "filetime", 1357 | "fnv", 1358 | "gix-bitmap", 1359 | "gix-features", 1360 | "gix-fs", 1361 | "gix-hash", 1362 | "gix-lock", 1363 | "gix-object", 1364 | "gix-traverse", 1365 | "gix-utils", 1366 | "gix-validate", 1367 | "hashbrown 0.14.5", 1368 | "itoa", 1369 | "libc", 1370 | "memmap2", 1371 | "rustix 0.38.43", 1372 | "smallvec", 1373 | "thiserror 2.0.11", 1374 | ] 1375 | 1376 | [[package]] 1377 | name = "gix-lock" 1378 | version = "16.0.0" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "9739815270ff6940968441824d162df9433db19211ca9ba8c3fc1b50b849c642" 1381 | dependencies = [ 1382 | "gix-tempfile", 1383 | "gix-utils", 1384 | "thiserror 2.0.11", 1385 | ] 1386 | 1387 | [[package]] 1388 | name = "gix-negotiate" 1389 | version = "0.18.0" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "a6a8af1ef7bbe303d30b55312b7f4d33e955de43a3642ae9b7347c623d80ef80" 1392 | dependencies = [ 1393 | "bitflags", 1394 | "gix-commitgraph", 1395 | "gix-date", 1396 | "gix-hash", 1397 | "gix-object", 1398 | "gix-revwalk", 1399 | "smallvec", 1400 | "thiserror 2.0.11", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "gix-object" 1405 | version = "0.47.0" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | checksum = "ddc4b3a0044244f0fe22347fb7a79cca165e37829d668b41b85ff46a43e5fd68" 1408 | dependencies = [ 1409 | "bstr", 1410 | "gix-actor", 1411 | "gix-date", 1412 | "gix-features", 1413 | "gix-hash", 1414 | "gix-hashtable", 1415 | "gix-path", 1416 | "gix-utils", 1417 | "gix-validate", 1418 | "itoa", 1419 | "smallvec", 1420 | "thiserror 2.0.11", 1421 | "winnow 0.6.22", 1422 | ] 1423 | 1424 | [[package]] 1425 | name = "gix-odb" 1426 | version = "0.67.0" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "3e93457df69cd09573608ce9fa4f443fbd84bc8d15d8d83adecd471058459c1b" 1429 | dependencies = [ 1430 | "arc-swap", 1431 | "gix-date", 1432 | "gix-features", 1433 | "gix-fs", 1434 | "gix-hash", 1435 | "gix-hashtable", 1436 | "gix-object", 1437 | "gix-pack", 1438 | "gix-path", 1439 | "gix-quote", 1440 | "parking_lot", 1441 | "tempfile", 1442 | "thiserror 2.0.11", 1443 | ] 1444 | 1445 | [[package]] 1446 | name = "gix-pack" 1447 | version = "0.57.0" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | checksum = "fc13a475b3db735617017fb35f816079bf503765312d4b1913b18cf96f3fa515" 1450 | dependencies = [ 1451 | "clru", 1452 | "gix-chunk", 1453 | "gix-features", 1454 | "gix-hash", 1455 | "gix-hashtable", 1456 | "gix-object", 1457 | "gix-path", 1458 | "gix-tempfile", 1459 | "memmap2", 1460 | "parking_lot", 1461 | "smallvec", 1462 | "thiserror 2.0.11", 1463 | ] 1464 | 1465 | [[package]] 1466 | name = "gix-packetline" 1467 | version = "0.18.3" 1468 | source = "registry+https://github.com/rust-lang/crates.io-index" 1469 | checksum = "c7e5ae6bc3ac160a6bf44a55f5537813ca3ddb08549c0fd3e7ef699c73c439cd" 1470 | dependencies = [ 1471 | "bstr", 1472 | "faster-hex", 1473 | "gix-trace", 1474 | "thiserror 2.0.11", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "gix-packetline-blocking" 1479 | version = "0.18.2" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "c1cbf8767c6abd5a6779f586702b5bcd8702380f4208219449cf1c9d0cd1e17c" 1482 | dependencies = [ 1483 | "bstr", 1484 | "faster-hex", 1485 | "gix-trace", 1486 | "thiserror 2.0.11", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "gix-path" 1491 | version = "0.10.14" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "c40f12bb65a8299be0cfb90fe718e3be236b7a94b434877012980863a883a99f" 1494 | dependencies = [ 1495 | "bstr", 1496 | "gix-trace", 1497 | "home", 1498 | "once_cell", 1499 | "thiserror 2.0.11", 1500 | ] 1501 | 1502 | [[package]] 1503 | name = "gix-pathspec" 1504 | version = "0.9.0" 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" 1506 | checksum = "6430d3a686c08e9d59019806faa78c17315fe22ae73151a452195857ca02f86c" 1507 | dependencies = [ 1508 | "bitflags", 1509 | "bstr", 1510 | "gix-attributes", 1511 | "gix-config-value", 1512 | "gix-glob", 1513 | "gix-path", 1514 | "thiserror 2.0.11", 1515 | ] 1516 | 1517 | [[package]] 1518 | name = "gix-prompt" 1519 | version = "0.9.1" 1520 | source = "registry+https://github.com/rust-lang/crates.io-index" 1521 | checksum = "79f2185958e1512b989a007509df8d61dca014aa759a22bee80cfa6c594c3b6d" 1522 | dependencies = [ 1523 | "gix-command", 1524 | "gix-config-value", 1525 | "parking_lot", 1526 | "rustix 0.38.43", 1527 | "thiserror 2.0.11", 1528 | ] 1529 | 1530 | [[package]] 1531 | name = "gix-protocol" 1532 | version = "0.48.0" 1533 | source = "registry+https://github.com/rust-lang/crates.io-index" 1534 | checksum = "6c61bd61afc6b67d213241e2100394c164be421e3f7228d3521b04f48ca5ba90" 1535 | dependencies = [ 1536 | "bstr", 1537 | "gix-credentials", 1538 | "gix-date", 1539 | "gix-features", 1540 | "gix-hash", 1541 | "gix-lock", 1542 | "gix-negotiate", 1543 | "gix-object", 1544 | "gix-ref", 1545 | "gix-refspec", 1546 | "gix-revwalk", 1547 | "gix-shallow", 1548 | "gix-trace", 1549 | "gix-transport", 1550 | "gix-utils", 1551 | "maybe-async", 1552 | "thiserror 2.0.11", 1553 | "winnow 0.6.22", 1554 | ] 1555 | 1556 | [[package]] 1557 | name = "gix-quote" 1558 | version = "0.4.15" 1559 | source = "registry+https://github.com/rust-lang/crates.io-index" 1560 | checksum = "e49357fccdb0c85c0d3a3292a9f6db32d9b3535959b5471bb9624908f4a066c6" 1561 | dependencies = [ 1562 | "bstr", 1563 | "gix-utils", 1564 | "thiserror 2.0.11", 1565 | ] 1566 | 1567 | [[package]] 1568 | name = "gix-ref" 1569 | version = "0.50.0" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | checksum = "47adf4c5f933429f8554e95d0d92eee583cfe4b95d2bf665cd6fd4a1531ee20c" 1572 | dependencies = [ 1573 | "gix-actor", 1574 | "gix-features", 1575 | "gix-fs", 1576 | "gix-hash", 1577 | "gix-lock", 1578 | "gix-object", 1579 | "gix-path", 1580 | "gix-tempfile", 1581 | "gix-utils", 1582 | "gix-validate", 1583 | "memmap2", 1584 | "thiserror 2.0.11", 1585 | "winnow 0.6.22", 1586 | ] 1587 | 1588 | [[package]] 1589 | name = "gix-refspec" 1590 | version = "0.28.0" 1591 | source = "registry+https://github.com/rust-lang/crates.io-index" 1592 | checksum = "59650228d8f612f68e7f7a25f517fcf386c5d0d39826085492e94766858b0a90" 1593 | dependencies = [ 1594 | "bstr", 1595 | "gix-hash", 1596 | "gix-revision", 1597 | "gix-validate", 1598 | "smallvec", 1599 | "thiserror 2.0.11", 1600 | ] 1601 | 1602 | [[package]] 1603 | name = "gix-revision" 1604 | version = "0.32.0" 1605 | source = "registry+https://github.com/rust-lang/crates.io-index" 1606 | checksum = "3fe28bbccca55da6d66e6c6efc6bb4003c29d407afd8178380293729733e6b53" 1607 | dependencies = [ 1608 | "bstr", 1609 | "gix-commitgraph", 1610 | "gix-date", 1611 | "gix-hash", 1612 | "gix-object", 1613 | "gix-revwalk", 1614 | "thiserror 2.0.11", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "gix-revwalk" 1619 | version = "0.18.0" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "d4ecb80c235b1e9ef2b99b23a81ea50dd569a88a9eb767179793269e0e616247" 1622 | dependencies = [ 1623 | "gix-commitgraph", 1624 | "gix-date", 1625 | "gix-hash", 1626 | "gix-hashtable", 1627 | "gix-object", 1628 | "smallvec", 1629 | "thiserror 2.0.11", 1630 | ] 1631 | 1632 | [[package]] 1633 | name = "gix-sec" 1634 | version = "0.10.11" 1635 | source = "registry+https://github.com/rust-lang/crates.io-index" 1636 | checksum = "d84dae13271f4313f8d60a166bf27e54c968c7c33e2ffd31c48cafe5da649875" 1637 | dependencies = [ 1638 | "bitflags", 1639 | "gix-path", 1640 | "libc", 1641 | "windows-sys 0.52.0", 1642 | ] 1643 | 1644 | [[package]] 1645 | name = "gix-shallow" 1646 | version = "0.2.0" 1647 | source = "registry+https://github.com/rust-lang/crates.io-index" 1648 | checksum = "ab72543011e303e52733c85bef784603ef39632ddf47f69723def52825e35066" 1649 | dependencies = [ 1650 | "bstr", 1651 | "gix-hash", 1652 | "gix-lock", 1653 | "thiserror 2.0.11", 1654 | ] 1655 | 1656 | [[package]] 1657 | name = "gix-submodule" 1658 | version = "0.17.0" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "74972fe8d46ac8a09490ae1e843b4caf221c5b157c5ac17057e8e1c38417a3ac" 1661 | dependencies = [ 1662 | "bstr", 1663 | "gix-config", 1664 | "gix-path", 1665 | "gix-pathspec", 1666 | "gix-refspec", 1667 | "gix-url", 1668 | "thiserror 2.0.11", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "gix-tempfile" 1673 | version = "16.0.0" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "2558f423945ef24a8328c55d1fd6db06b8376b0e7013b1bb476cc4ffdf678501" 1676 | dependencies = [ 1677 | "gix-fs", 1678 | "libc", 1679 | "once_cell", 1680 | "parking_lot", 1681 | "tempfile", 1682 | ] 1683 | 1684 | [[package]] 1685 | name = "gix-trace" 1686 | version = "0.1.12" 1687 | source = "registry+https://github.com/rust-lang/crates.io-index" 1688 | checksum = "7c396a2036920c69695f760a65e7f2677267ccf483f25046977d87e4cb2665f7" 1689 | 1690 | [[package]] 1691 | name = "gix-transport" 1692 | version = "0.45.0" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "11187418489477b1b5b862ae1aedbbac77e582f2c4b0ef54280f20cfe5b964d9" 1695 | dependencies = [ 1696 | "base64", 1697 | "bstr", 1698 | "curl", 1699 | "gix-command", 1700 | "gix-credentials", 1701 | "gix-features", 1702 | "gix-packetline", 1703 | "gix-quote", 1704 | "gix-sec", 1705 | "gix-url", 1706 | "thiserror 2.0.11", 1707 | ] 1708 | 1709 | [[package]] 1710 | name = "gix-traverse" 1711 | version = "0.44.0" 1712 | source = "registry+https://github.com/rust-lang/crates.io-index" 1713 | checksum = "2bec70e53896586ef32a3efa7e4427b67308531ed186bb6120fb3eca0f0d61b4" 1714 | dependencies = [ 1715 | "bitflags", 1716 | "gix-commitgraph", 1717 | "gix-date", 1718 | "gix-hash", 1719 | "gix-hashtable", 1720 | "gix-object", 1721 | "gix-revwalk", 1722 | "smallvec", 1723 | "thiserror 2.0.11", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "gix-url" 1728 | version = "0.29.0" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "29218c768b53dd8f116045d87fec05b294c731a4b2bdd257eeca2084cc150b13" 1731 | dependencies = [ 1732 | "bstr", 1733 | "gix-features", 1734 | "gix-path", 1735 | "percent-encoding", 1736 | "thiserror 2.0.11", 1737 | "url", 1738 | ] 1739 | 1740 | [[package]] 1741 | name = "gix-utils" 1742 | version = "0.1.14" 1743 | source = "registry+https://github.com/rust-lang/crates.io-index" 1744 | checksum = "ff08f24e03ac8916c478c8419d7d3c33393da9bb41fa4c24455d5406aeefd35f" 1745 | dependencies = [ 1746 | "bstr", 1747 | "fastrand", 1748 | "unicode-normalization", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "gix-validate" 1753 | version = "0.9.3" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "9eaa01c3337d885617c0a42e92823922a2aea71f4caeace6fe87002bdcadbd90" 1756 | dependencies = [ 1757 | "bstr", 1758 | "thiserror 2.0.11", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "gix-worktree" 1763 | version = "0.39.0" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "6673512f7eaa57a6876adceca6978a501d6c6569a4f177767dc405f8b9778958" 1766 | dependencies = [ 1767 | "bstr", 1768 | "gix-attributes", 1769 | "gix-features", 1770 | "gix-fs", 1771 | "gix-glob", 1772 | "gix-hash", 1773 | "gix-ignore", 1774 | "gix-index", 1775 | "gix-object", 1776 | "gix-path", 1777 | "gix-validate", 1778 | ] 1779 | 1780 | [[package]] 1781 | name = "glob" 1782 | version = "0.3.2" 1783 | source = "registry+https://github.com/rust-lang/crates.io-index" 1784 | checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" 1785 | 1786 | [[package]] 1787 | name = "globset" 1788 | version = "0.4.15" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" 1791 | dependencies = [ 1792 | "aho-corasick", 1793 | "bstr", 1794 | "log", 1795 | "regex-automata 0.4.9", 1796 | "regex-syntax 0.8.5", 1797 | ] 1798 | 1799 | [[package]] 1800 | name = "group" 1801 | version = "0.13.0" 1802 | source = "registry+https://github.com/rust-lang/crates.io-index" 1803 | checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 1804 | dependencies = [ 1805 | "ff", 1806 | "rand_core 0.6.4", 1807 | "subtle", 1808 | ] 1809 | 1810 | [[package]] 1811 | name = "hashbrown" 1812 | version = "0.14.5" 1813 | source = "registry+https://github.com/rust-lang/crates.io-index" 1814 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1815 | dependencies = [ 1816 | "ahash", 1817 | "allocator-api2", 1818 | ] 1819 | 1820 | [[package]] 1821 | name = "hashbrown" 1822 | version = "0.15.2" 1823 | source = "registry+https://github.com/rust-lang/crates.io-index" 1824 | checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 1825 | dependencies = [ 1826 | "foldhash", 1827 | ] 1828 | 1829 | [[package]] 1830 | name = "hashlink" 1831 | version = "0.10.0" 1832 | source = "registry+https://github.com/rust-lang/crates.io-index" 1833 | checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" 1834 | dependencies = [ 1835 | "hashbrown 0.15.2", 1836 | ] 1837 | 1838 | [[package]] 1839 | name = "heck" 1840 | version = "0.5.0" 1841 | source = "registry+https://github.com/rust-lang/crates.io-index" 1842 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1843 | 1844 | [[package]] 1845 | name = "hex" 1846 | version = "0.4.3" 1847 | source = "registry+https://github.com/rust-lang/crates.io-index" 1848 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1849 | 1850 | [[package]] 1851 | name = "hkdf" 1852 | version = "0.12.4" 1853 | source = "registry+https://github.com/rust-lang/crates.io-index" 1854 | checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 1855 | dependencies = [ 1856 | "hmac", 1857 | ] 1858 | 1859 | [[package]] 1860 | name = "hmac" 1861 | version = "0.12.1" 1862 | source = "registry+https://github.com/rust-lang/crates.io-index" 1863 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1864 | dependencies = [ 1865 | "digest", 1866 | ] 1867 | 1868 | [[package]] 1869 | name = "home" 1870 | version = "0.5.11" 1871 | source = "registry+https://github.com/rust-lang/crates.io-index" 1872 | checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" 1873 | dependencies = [ 1874 | "windows-sys 0.59.0", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "http-auth" 1879 | version = "0.1.10" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "150fa4a9462ef926824cf4519c84ed652ca8f4fbae34cb8af045b5cbcaf98822" 1882 | dependencies = [ 1883 | "memchr", 1884 | ] 1885 | 1886 | [[package]] 1887 | name = "icu_collections" 1888 | version = "1.5.0" 1889 | source = "registry+https://github.com/rust-lang/crates.io-index" 1890 | checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 1891 | dependencies = [ 1892 | "displaydoc", 1893 | "yoke", 1894 | "zerofrom", 1895 | "zerovec", 1896 | ] 1897 | 1898 | [[package]] 1899 | name = "icu_locid" 1900 | version = "1.5.0" 1901 | source = "registry+https://github.com/rust-lang/crates.io-index" 1902 | checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 1903 | dependencies = [ 1904 | "displaydoc", 1905 | "litemap", 1906 | "tinystr", 1907 | "writeable", 1908 | "zerovec", 1909 | ] 1910 | 1911 | [[package]] 1912 | name = "icu_locid_transform" 1913 | version = "1.5.0" 1914 | source = "registry+https://github.com/rust-lang/crates.io-index" 1915 | checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 1916 | dependencies = [ 1917 | "displaydoc", 1918 | "icu_locid", 1919 | "icu_locid_transform_data", 1920 | "icu_provider", 1921 | "tinystr", 1922 | "zerovec", 1923 | ] 1924 | 1925 | [[package]] 1926 | name = "icu_locid_transform_data" 1927 | version = "1.5.0" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" 1930 | 1931 | [[package]] 1932 | name = "icu_normalizer" 1933 | version = "1.5.0" 1934 | source = "registry+https://github.com/rust-lang/crates.io-index" 1935 | checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 1936 | dependencies = [ 1937 | "displaydoc", 1938 | "icu_collections", 1939 | "icu_normalizer_data", 1940 | "icu_properties", 1941 | "icu_provider", 1942 | "smallvec", 1943 | "utf16_iter", 1944 | "utf8_iter", 1945 | "write16", 1946 | "zerovec", 1947 | ] 1948 | 1949 | [[package]] 1950 | name = "icu_normalizer_data" 1951 | version = "1.5.0" 1952 | source = "registry+https://github.com/rust-lang/crates.io-index" 1953 | checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" 1954 | 1955 | [[package]] 1956 | name = "icu_properties" 1957 | version = "1.5.1" 1958 | source = "registry+https://github.com/rust-lang/crates.io-index" 1959 | checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" 1960 | dependencies = [ 1961 | "displaydoc", 1962 | "icu_collections", 1963 | "icu_locid_transform", 1964 | "icu_properties_data", 1965 | "icu_provider", 1966 | "tinystr", 1967 | "zerovec", 1968 | ] 1969 | 1970 | [[package]] 1971 | name = "icu_properties_data" 1972 | version = "1.5.0" 1973 | source = "registry+https://github.com/rust-lang/crates.io-index" 1974 | checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" 1975 | 1976 | [[package]] 1977 | name = "icu_provider" 1978 | version = "1.5.0" 1979 | source = "registry+https://github.com/rust-lang/crates.io-index" 1980 | checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 1981 | dependencies = [ 1982 | "displaydoc", 1983 | "icu_locid", 1984 | "icu_provider_macros", 1985 | "stable_deref_trait", 1986 | "tinystr", 1987 | "writeable", 1988 | "yoke", 1989 | "zerofrom", 1990 | "zerovec", 1991 | ] 1992 | 1993 | [[package]] 1994 | name = "icu_provider_macros" 1995 | version = "1.5.0" 1996 | source = "registry+https://github.com/rust-lang/crates.io-index" 1997 | checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 1998 | dependencies = [ 1999 | "proc-macro2", 2000 | "quote", 2001 | "syn", 2002 | ] 2003 | 2004 | [[package]] 2005 | name = "idna" 2006 | version = "1.0.3" 2007 | source = "registry+https://github.com/rust-lang/crates.io-index" 2008 | checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 2009 | dependencies = [ 2010 | "idna_adapter", 2011 | "smallvec", 2012 | "utf8_iter", 2013 | ] 2014 | 2015 | [[package]] 2016 | name = "idna_adapter" 2017 | version = "1.2.0" 2018 | source = "registry+https://github.com/rust-lang/crates.io-index" 2019 | checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" 2020 | dependencies = [ 2021 | "icu_normalizer", 2022 | "icu_properties", 2023 | ] 2024 | 2025 | [[package]] 2026 | name = "ignore" 2027 | version = "0.4.23" 2028 | source = "registry+https://github.com/rust-lang/crates.io-index" 2029 | checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" 2030 | dependencies = [ 2031 | "crossbeam-deque", 2032 | "globset", 2033 | "log", 2034 | "memchr", 2035 | "regex-automata 0.4.9", 2036 | "same-file", 2037 | "walkdir", 2038 | "winapi-util", 2039 | ] 2040 | 2041 | [[package]] 2042 | name = "im-rc" 2043 | version = "15.1.0" 2044 | source = "registry+https://github.com/rust-lang/crates.io-index" 2045 | checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe" 2046 | dependencies = [ 2047 | "bitmaps", 2048 | "rand_core 0.6.4", 2049 | "rand_xoshiro", 2050 | "sized-chunks", 2051 | "typenum", 2052 | "version_check", 2053 | ] 2054 | 2055 | [[package]] 2056 | name = "indexmap" 2057 | version = "2.9.0" 2058 | source = "registry+https://github.com/rust-lang/crates.io-index" 2059 | checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" 2060 | dependencies = [ 2061 | "equivalent", 2062 | "hashbrown 0.15.2", 2063 | ] 2064 | 2065 | [[package]] 2066 | name = "is_executable" 2067 | version = "1.0.4" 2068 | source = "registry+https://github.com/rust-lang/crates.io-index" 2069 | checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" 2070 | dependencies = [ 2071 | "winapi", 2072 | ] 2073 | 2074 | [[package]] 2075 | name = "is_terminal_polyfill" 2076 | version = "1.70.1" 2077 | source = "registry+https://github.com/rust-lang/crates.io-index" 2078 | checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" 2079 | 2080 | [[package]] 2081 | name = "itertools" 2082 | version = "0.14.0" 2083 | source = "registry+https://github.com/rust-lang/crates.io-index" 2084 | checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 2085 | dependencies = [ 2086 | "either", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "itoa" 2091 | version = "1.0.14" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" 2094 | 2095 | [[package]] 2096 | name = "jiff" 2097 | version = "0.1.21" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "ed0ce60560149333a8e41ca7dc78799c47c5fd435e2bc18faf6a054382eec037" 2100 | dependencies = [ 2101 | "jiff-tzdb-platform", 2102 | "log", 2103 | "portable-atomic", 2104 | "portable-atomic-util", 2105 | "serde", 2106 | "windows-sys 0.59.0", 2107 | ] 2108 | 2109 | [[package]] 2110 | name = "jiff" 2111 | version = "0.2.14" 2112 | source = "registry+https://github.com/rust-lang/crates.io-index" 2113 | checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" 2114 | dependencies = [ 2115 | "jiff-static", 2116 | "log", 2117 | "portable-atomic", 2118 | "portable-atomic-util", 2119 | "serde", 2120 | ] 2121 | 2122 | [[package]] 2123 | name = "jiff-static" 2124 | version = "0.2.14" 2125 | source = "registry+https://github.com/rust-lang/crates.io-index" 2126 | checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" 2127 | dependencies = [ 2128 | "proc-macro2", 2129 | "quote", 2130 | "syn", 2131 | ] 2132 | 2133 | [[package]] 2134 | name = "jiff-tzdb" 2135 | version = "0.1.1" 2136 | source = "registry+https://github.com/rust-lang/crates.io-index" 2137 | checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" 2138 | 2139 | [[package]] 2140 | name = "jiff-tzdb-platform" 2141 | version = "0.1.1" 2142 | source = "registry+https://github.com/rust-lang/crates.io-index" 2143 | checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" 2144 | dependencies = [ 2145 | "jiff-tzdb", 2146 | ] 2147 | 2148 | [[package]] 2149 | name = "jobserver" 2150 | version = "0.1.32" 2151 | source = "registry+https://github.com/rust-lang/crates.io-index" 2152 | checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" 2153 | dependencies = [ 2154 | "libc", 2155 | ] 2156 | 2157 | [[package]] 2158 | name = "js-sys" 2159 | version = "0.3.77" 2160 | source = "registry+https://github.com/rust-lang/crates.io-index" 2161 | checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" 2162 | dependencies = [ 2163 | "once_cell", 2164 | "wasm-bindgen", 2165 | ] 2166 | 2167 | [[package]] 2168 | name = "kstring" 2169 | version = "2.0.2" 2170 | source = "registry+https://github.com/rust-lang/crates.io-index" 2171 | checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" 2172 | dependencies = [ 2173 | "static_assertions", 2174 | ] 2175 | 2176 | [[package]] 2177 | name = "lazy_static" 2178 | version = "1.5.0" 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" 2180 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 2181 | 2182 | [[package]] 2183 | name = "lazycell" 2184 | version = "1.3.0" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 2187 | 2188 | [[package]] 2189 | name = "libc" 2190 | version = "0.2.169" 2191 | source = "registry+https://github.com/rust-lang/crates.io-index" 2192 | checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" 2193 | 2194 | [[package]] 2195 | name = "libdbus-sys" 2196 | version = "0.2.5" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" 2199 | dependencies = [ 2200 | "cc", 2201 | "pkg-config", 2202 | ] 2203 | 2204 | [[package]] 2205 | name = "libgit2-sys" 2206 | version = "0.18.1+1.9.0" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "e1dcb20f84ffcdd825c7a311ae347cce604a6f084a767dec4a4929829645290e" 2209 | dependencies = [ 2210 | "cc", 2211 | "libc", 2212 | "libssh2-sys", 2213 | "libz-sys", 2214 | "openssl-sys", 2215 | "pkg-config", 2216 | ] 2217 | 2218 | [[package]] 2219 | name = "libloading" 2220 | version = "0.8.6" 2221 | source = "registry+https://github.com/rust-lang/crates.io-index" 2222 | checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" 2223 | dependencies = [ 2224 | "cfg-if", 2225 | "windows-targets 0.52.6", 2226 | ] 2227 | 2228 | [[package]] 2229 | name = "libnghttp2-sys" 2230 | version = "0.1.10+1.61.0" 2231 | source = "registry+https://github.com/rust-lang/crates.io-index" 2232 | checksum = "959c25552127d2e1fa72f0e52548ec04fc386e827ba71a7bd01db46a447dc135" 2233 | dependencies = [ 2234 | "cc", 2235 | "libc", 2236 | ] 2237 | 2238 | [[package]] 2239 | name = "libredox" 2240 | version = "0.1.3" 2241 | source = "registry+https://github.com/rust-lang/crates.io-index" 2242 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 2243 | dependencies = [ 2244 | "bitflags", 2245 | "libc", 2246 | "redox_syscall", 2247 | ] 2248 | 2249 | [[package]] 2250 | name = "libsqlite3-sys" 2251 | version = "0.31.0" 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" 2253 | checksum = "ad8935b44e7c13394a179a438e0cebba0fe08fe01b54f152e29a93b5cf993fd4" 2254 | dependencies = [ 2255 | "cc", 2256 | "pkg-config", 2257 | "vcpkg", 2258 | ] 2259 | 2260 | [[package]] 2261 | name = "libssh2-sys" 2262 | version = "0.3.0" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" 2265 | dependencies = [ 2266 | "cc", 2267 | "libc", 2268 | "libz-sys", 2269 | "openssl-sys", 2270 | "pkg-config", 2271 | "vcpkg", 2272 | ] 2273 | 2274 | [[package]] 2275 | name = "libz-sys" 2276 | version = "1.1.21" 2277 | source = "registry+https://github.com/rust-lang/crates.io-index" 2278 | checksum = "df9b68e50e6e0b26f672573834882eb57759f6db9b3be2ea3c35c91188bb4eaa" 2279 | dependencies = [ 2280 | "cc", 2281 | "libc", 2282 | "pkg-config", 2283 | "vcpkg", 2284 | ] 2285 | 2286 | [[package]] 2287 | name = "linux-raw-sys" 2288 | version = "0.4.15" 2289 | source = "registry+https://github.com/rust-lang/crates.io-index" 2290 | checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 2291 | 2292 | [[package]] 2293 | name = "linux-raw-sys" 2294 | version = "0.9.3" 2295 | source = "registry+https://github.com/rust-lang/crates.io-index" 2296 | checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" 2297 | 2298 | [[package]] 2299 | name = "litemap" 2300 | version = "0.7.4" 2301 | source = "registry+https://github.com/rust-lang/crates.io-index" 2302 | checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" 2303 | 2304 | [[package]] 2305 | name = "lock_api" 2306 | version = "0.4.12" 2307 | source = "registry+https://github.com/rust-lang/crates.io-index" 2308 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2309 | dependencies = [ 2310 | "autocfg", 2311 | "scopeguard", 2312 | ] 2313 | 2314 | [[package]] 2315 | name = "log" 2316 | version = "0.4.22" 2317 | source = "registry+https://github.com/rust-lang/crates.io-index" 2318 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 2319 | 2320 | [[package]] 2321 | name = "matchers" 2322 | version = "0.1.0" 2323 | source = "registry+https://github.com/rust-lang/crates.io-index" 2324 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 2325 | dependencies = [ 2326 | "regex-automata 0.1.10", 2327 | ] 2328 | 2329 | [[package]] 2330 | name = "maybe-async" 2331 | version = "0.2.10" 2332 | source = "registry+https://github.com/rust-lang/crates.io-index" 2333 | checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" 2334 | dependencies = [ 2335 | "proc-macro2", 2336 | "quote", 2337 | "syn", 2338 | ] 2339 | 2340 | [[package]] 2341 | name = "memchr" 2342 | version = "2.7.4" 2343 | source = "registry+https://github.com/rust-lang/crates.io-index" 2344 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 2345 | 2346 | [[package]] 2347 | name = "memmap2" 2348 | version = "0.9.5" 2349 | source = "registry+https://github.com/rust-lang/crates.io-index" 2350 | checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" 2351 | dependencies = [ 2352 | "libc", 2353 | ] 2354 | 2355 | [[package]] 2356 | name = "minimal-lexical" 2357 | version = "0.2.1" 2358 | source = "registry+https://github.com/rust-lang/crates.io-index" 2359 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2360 | 2361 | [[package]] 2362 | name = "miniz_oxide" 2363 | version = "0.8.2" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" 2366 | dependencies = [ 2367 | "adler2", 2368 | ] 2369 | 2370 | [[package]] 2371 | name = "miow" 2372 | version = "0.6.0" 2373 | source = "registry+https://github.com/rust-lang/crates.io-index" 2374 | checksum = "359f76430b20a79f9e20e115b3428614e654f04fab314482fc0fda0ebd3c6044" 2375 | dependencies = [ 2376 | "windows-sys 0.48.0", 2377 | ] 2378 | 2379 | [[package]] 2380 | name = "nom" 2381 | version = "7.1.3" 2382 | source = "registry+https://github.com/rust-lang/crates.io-index" 2383 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2384 | dependencies = [ 2385 | "memchr", 2386 | "minimal-lexical", 2387 | ] 2388 | 2389 | [[package]] 2390 | name = "normpath" 2391 | version = "1.3.0" 2392 | source = "registry+https://github.com/rust-lang/crates.io-index" 2393 | checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" 2394 | dependencies = [ 2395 | "windows-sys 0.59.0", 2396 | ] 2397 | 2398 | [[package]] 2399 | name = "nu-ansi-term" 2400 | version = "0.46.0" 2401 | source = "registry+https://github.com/rust-lang/crates.io-index" 2402 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 2403 | dependencies = [ 2404 | "overload", 2405 | "winapi", 2406 | ] 2407 | 2408 | [[package]] 2409 | name = "num-conv" 2410 | version = "0.1.0" 2411 | source = "registry+https://github.com/rust-lang/crates.io-index" 2412 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2413 | 2414 | [[package]] 2415 | name = "num-traits" 2416 | version = "0.2.19" 2417 | source = "registry+https://github.com/rust-lang/crates.io-index" 2418 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2419 | dependencies = [ 2420 | "autocfg", 2421 | ] 2422 | 2423 | [[package]] 2424 | name = "once_cell" 2425 | version = "1.20.2" 2426 | source = "registry+https://github.com/rust-lang/crates.io-index" 2427 | checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" 2428 | 2429 | [[package]] 2430 | name = "opener" 2431 | version = "0.7.2" 2432 | source = "registry+https://github.com/rust-lang/crates.io-index" 2433 | checksum = "d0812e5e4df08da354c851a3376fead46db31c2214f849d3de356d774d057681" 2434 | dependencies = [ 2435 | "bstr", 2436 | "dbus", 2437 | "normpath", 2438 | "windows-sys 0.59.0", 2439 | ] 2440 | 2441 | [[package]] 2442 | name = "openssl" 2443 | version = "0.10.57" 2444 | source = "registry+https://github.com/rust-lang/crates.io-index" 2445 | checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" 2446 | dependencies = [ 2447 | "bitflags", 2448 | "cfg-if", 2449 | "foreign-types", 2450 | "libc", 2451 | "once_cell", 2452 | "openssl-macros", 2453 | "openssl-sys", 2454 | ] 2455 | 2456 | [[package]] 2457 | name = "openssl-macros" 2458 | version = "0.1.1" 2459 | source = "registry+https://github.com/rust-lang/crates.io-index" 2460 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 2461 | dependencies = [ 2462 | "proc-macro2", 2463 | "quote", 2464 | "syn", 2465 | ] 2466 | 2467 | [[package]] 2468 | name = "openssl-probe" 2469 | version = "0.1.5" 2470 | source = "registry+https://github.com/rust-lang/crates.io-index" 2471 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 2472 | 2473 | [[package]] 2474 | name = "openssl-src" 2475 | version = "300.4.1+3.4.0" 2476 | source = "registry+https://github.com/rust-lang/crates.io-index" 2477 | checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" 2478 | dependencies = [ 2479 | "cc", 2480 | ] 2481 | 2482 | [[package]] 2483 | name = "openssl-sys" 2484 | version = "0.9.104" 2485 | source = "registry+https://github.com/rust-lang/crates.io-index" 2486 | checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" 2487 | dependencies = [ 2488 | "cc", 2489 | "libc", 2490 | "openssl-src", 2491 | "pkg-config", 2492 | "vcpkg", 2493 | ] 2494 | 2495 | [[package]] 2496 | name = "ordered-float" 2497 | version = "2.10.1" 2498 | source = "registry+https://github.com/rust-lang/crates.io-index" 2499 | checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" 2500 | dependencies = [ 2501 | "num-traits", 2502 | ] 2503 | 2504 | [[package]] 2505 | name = "orion" 2506 | version = "0.17.6" 2507 | source = "registry+https://github.com/rust-lang/crates.io-index" 2508 | checksum = "7abdb10181903c8c4b016ba45d6d6d5af1a1e2a461aa4763a83b87f5df4695e5" 2509 | dependencies = [ 2510 | "fiat-crypto", 2511 | "subtle", 2512 | "zeroize", 2513 | ] 2514 | 2515 | [[package]] 2516 | name = "os_info" 2517 | version = "3.11.0" 2518 | source = "registry+https://github.com/rust-lang/crates.io-index" 2519 | checksum = "41fc863e2ca13dc2d5c34fb22ea4a588248ac14db929616ba65c45f21744b1e9" 2520 | dependencies = [ 2521 | "log", 2522 | "windows-sys 0.52.0", 2523 | ] 2524 | 2525 | [[package]] 2526 | name = "overload" 2527 | version = "0.1.1" 2528 | source = "registry+https://github.com/rust-lang/crates.io-index" 2529 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2530 | 2531 | [[package]] 2532 | name = "p384" 2533 | version = "0.13.0" 2534 | source = "registry+https://github.com/rust-lang/crates.io-index" 2535 | checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" 2536 | dependencies = [ 2537 | "ecdsa", 2538 | "elliptic-curve", 2539 | "primeorder", 2540 | "sha2", 2541 | ] 2542 | 2543 | [[package]] 2544 | name = "parking_lot" 2545 | version = "0.12.3" 2546 | source = "registry+https://github.com/rust-lang/crates.io-index" 2547 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 2548 | dependencies = [ 2549 | "lock_api", 2550 | "parking_lot_core", 2551 | ] 2552 | 2553 | [[package]] 2554 | name = "parking_lot_core" 2555 | version = "0.9.10" 2556 | source = "registry+https://github.com/rust-lang/crates.io-index" 2557 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2558 | dependencies = [ 2559 | "cfg-if", 2560 | "libc", 2561 | "redox_syscall", 2562 | "smallvec", 2563 | "windows-targets 0.52.6", 2564 | ] 2565 | 2566 | [[package]] 2567 | name = "pasetors" 2568 | version = "0.7.4" 2569 | source = "registry+https://github.com/rust-lang/crates.io-index" 2570 | checksum = "cb798c661c80718af935bea17997928937822e7369cd087667ff4179f9146551" 2571 | dependencies = [ 2572 | "ct-codecs", 2573 | "ed25519-compact", 2574 | "getrandom 0.3.2", 2575 | "orion", 2576 | "p384", 2577 | "rand_core 0.6.4", 2578 | "regex", 2579 | "serde", 2580 | "serde_json", 2581 | "sha2", 2582 | "subtle", 2583 | "time", 2584 | "zeroize", 2585 | ] 2586 | 2587 | [[package]] 2588 | name = "pathdiff" 2589 | version = "0.2.3" 2590 | source = "registry+https://github.com/rust-lang/crates.io-index" 2591 | checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" 2592 | 2593 | [[package]] 2594 | name = "pem-rfc7468" 2595 | version = "0.7.0" 2596 | source = "registry+https://github.com/rust-lang/crates.io-index" 2597 | checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 2598 | dependencies = [ 2599 | "base64ct", 2600 | ] 2601 | 2602 | [[package]] 2603 | name = "percent-encoding" 2604 | version = "2.3.1" 2605 | source = "registry+https://github.com/rust-lang/crates.io-index" 2606 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2607 | 2608 | [[package]] 2609 | name = "pin-project-lite" 2610 | version = "0.2.16" 2611 | source = "registry+https://github.com/rust-lang/crates.io-index" 2612 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 2613 | 2614 | [[package]] 2615 | name = "pkcs8" 2616 | version = "0.10.2" 2617 | source = "registry+https://github.com/rust-lang/crates.io-index" 2618 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2619 | dependencies = [ 2620 | "der", 2621 | "spki", 2622 | ] 2623 | 2624 | [[package]] 2625 | name = "pkg-config" 2626 | version = "0.3.31" 2627 | source = "registry+https://github.com/rust-lang/crates.io-index" 2628 | checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" 2629 | 2630 | [[package]] 2631 | name = "portable-atomic" 2632 | version = "1.10.0" 2633 | source = "registry+https://github.com/rust-lang/crates.io-index" 2634 | checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" 2635 | 2636 | [[package]] 2637 | name = "portable-atomic-util" 2638 | version = "0.2.4" 2639 | source = "registry+https://github.com/rust-lang/crates.io-index" 2640 | checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" 2641 | dependencies = [ 2642 | "portable-atomic", 2643 | ] 2644 | 2645 | [[package]] 2646 | name = "powerfmt" 2647 | version = "0.2.0" 2648 | source = "registry+https://github.com/rust-lang/crates.io-index" 2649 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2650 | 2651 | [[package]] 2652 | name = "ppv-lite86" 2653 | version = "0.2.20" 2654 | source = "registry+https://github.com/rust-lang/crates.io-index" 2655 | checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" 2656 | dependencies = [ 2657 | "zerocopy", 2658 | ] 2659 | 2660 | [[package]] 2661 | name = "predicates" 2662 | version = "3.1.2" 2663 | source = "registry+https://github.com/rust-lang/crates.io-index" 2664 | checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" 2665 | dependencies = [ 2666 | "anstyle", 2667 | "difflib", 2668 | "predicates-core", 2669 | ] 2670 | 2671 | [[package]] 2672 | name = "predicates-core" 2673 | version = "1.0.8" 2674 | source = "registry+https://github.com/rust-lang/crates.io-index" 2675 | checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" 2676 | 2677 | [[package]] 2678 | name = "predicates-tree" 2679 | version = "1.0.11" 2680 | source = "registry+https://github.com/rust-lang/crates.io-index" 2681 | checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" 2682 | dependencies = [ 2683 | "predicates-core", 2684 | "termtree", 2685 | ] 2686 | 2687 | [[package]] 2688 | name = "primeorder" 2689 | version = "0.13.6" 2690 | source = "registry+https://github.com/rust-lang/crates.io-index" 2691 | checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 2692 | dependencies = [ 2693 | "elliptic-curve", 2694 | ] 2695 | 2696 | [[package]] 2697 | name = "proc-macro2" 2698 | version = "1.0.93" 2699 | source = "registry+https://github.com/rust-lang/crates.io-index" 2700 | checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" 2701 | dependencies = [ 2702 | "unicode-ident", 2703 | ] 2704 | 2705 | [[package]] 2706 | name = "prodash" 2707 | version = "29.0.0" 2708 | source = "registry+https://github.com/rust-lang/crates.io-index" 2709 | checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325" 2710 | dependencies = [ 2711 | "log", 2712 | "parking_lot", 2713 | ] 2714 | 2715 | [[package]] 2716 | name = "quote" 2717 | version = "1.0.38" 2718 | source = "registry+https://github.com/rust-lang/crates.io-index" 2719 | checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" 2720 | dependencies = [ 2721 | "proc-macro2", 2722 | ] 2723 | 2724 | [[package]] 2725 | name = "r-efi" 2726 | version = "5.2.0" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" 2729 | 2730 | [[package]] 2731 | name = "rand" 2732 | version = "0.9.1" 2733 | source = "registry+https://github.com/rust-lang/crates.io-index" 2734 | checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" 2735 | dependencies = [ 2736 | "rand_chacha", 2737 | "rand_core 0.9.3", 2738 | ] 2739 | 2740 | [[package]] 2741 | name = "rand_chacha" 2742 | version = "0.9.0" 2743 | source = "registry+https://github.com/rust-lang/crates.io-index" 2744 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2745 | dependencies = [ 2746 | "ppv-lite86", 2747 | "rand_core 0.9.3", 2748 | ] 2749 | 2750 | [[package]] 2751 | name = "rand_core" 2752 | version = "0.6.4" 2753 | source = "registry+https://github.com/rust-lang/crates.io-index" 2754 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2755 | dependencies = [ 2756 | "getrandom 0.2.15", 2757 | ] 2758 | 2759 | [[package]] 2760 | name = "rand_core" 2761 | version = "0.9.3" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 2764 | dependencies = [ 2765 | "getrandom 0.3.2", 2766 | ] 2767 | 2768 | [[package]] 2769 | name = "rand_xoshiro" 2770 | version = "0.6.0" 2771 | source = "registry+https://github.com/rust-lang/crates.io-index" 2772 | checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" 2773 | dependencies = [ 2774 | "rand_core 0.6.4", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "redox_syscall" 2779 | version = "0.5.8" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" 2782 | dependencies = [ 2783 | "bitflags", 2784 | ] 2785 | 2786 | [[package]] 2787 | name = "regex" 2788 | version = "1.11.1" 2789 | source = "registry+https://github.com/rust-lang/crates.io-index" 2790 | checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" 2791 | dependencies = [ 2792 | "aho-corasick", 2793 | "memchr", 2794 | "regex-automata 0.4.9", 2795 | "regex-syntax 0.8.5", 2796 | ] 2797 | 2798 | [[package]] 2799 | name = "regex-automata" 2800 | version = "0.1.10" 2801 | source = "registry+https://github.com/rust-lang/crates.io-index" 2802 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2803 | dependencies = [ 2804 | "regex-syntax 0.6.29", 2805 | ] 2806 | 2807 | [[package]] 2808 | name = "regex-automata" 2809 | version = "0.4.9" 2810 | source = "registry+https://github.com/rust-lang/crates.io-index" 2811 | checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" 2812 | dependencies = [ 2813 | "aho-corasick", 2814 | "memchr", 2815 | "regex-syntax 0.8.5", 2816 | ] 2817 | 2818 | [[package]] 2819 | name = "regex-syntax" 2820 | version = "0.6.29" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 2823 | 2824 | [[package]] 2825 | name = "regex-syntax" 2826 | version = "0.8.5" 2827 | source = "registry+https://github.com/rust-lang/crates.io-index" 2828 | checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" 2829 | 2830 | [[package]] 2831 | name = "rfc6979" 2832 | version = "0.4.0" 2833 | source = "registry+https://github.com/rust-lang/crates.io-index" 2834 | checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 2835 | dependencies = [ 2836 | "hmac", 2837 | "subtle", 2838 | ] 2839 | 2840 | [[package]] 2841 | name = "rusqlite" 2842 | version = "0.33.0" 2843 | source = "registry+https://github.com/rust-lang/crates.io-index" 2844 | checksum = "1c6d5e5acb6f6129fe3f7ba0a7fc77bca1942cb568535e18e7bc40262baf3110" 2845 | dependencies = [ 2846 | "bitflags", 2847 | "fallible-iterator", 2848 | "fallible-streaming-iterator", 2849 | "hashlink", 2850 | "libsqlite3-sys", 2851 | "smallvec", 2852 | ] 2853 | 2854 | [[package]] 2855 | name = "rustc-hash" 2856 | version = "2.1.1" 2857 | source = "registry+https://github.com/rust-lang/crates.io-index" 2858 | checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2859 | 2860 | [[package]] 2861 | name = "rustc-stable-hash" 2862 | version = "0.1.2" 2863 | source = "registry+https://github.com/rust-lang/crates.io-index" 2864 | checksum = "781442f29170c5c93b7185ad559492601acdc71d5bb0706f5868094f45cfcd08" 2865 | 2866 | [[package]] 2867 | name = "rustfix" 2868 | version = "0.9.0" 2869 | source = "registry+https://github.com/rust-lang/crates.io-index" 2870 | checksum = "7f66156d7471ff4f12253cd7fd76dfe637a595a9418168154e8570f3947fe9a8" 2871 | dependencies = [ 2872 | "serde", 2873 | "serde_json", 2874 | "thiserror 1.0.69", 2875 | "tracing", 2876 | ] 2877 | 2878 | [[package]] 2879 | name = "rustix" 2880 | version = "0.38.43" 2881 | source = "registry+https://github.com/rust-lang/crates.io-index" 2882 | checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" 2883 | dependencies = [ 2884 | "bitflags", 2885 | "errno", 2886 | "libc", 2887 | "linux-raw-sys 0.4.15", 2888 | "windows-sys 0.59.0", 2889 | ] 2890 | 2891 | [[package]] 2892 | name = "rustix" 2893 | version = "1.0.3" 2894 | source = "registry+https://github.com/rust-lang/crates.io-index" 2895 | checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" 2896 | dependencies = [ 2897 | "bitflags", 2898 | "errno", 2899 | "libc", 2900 | "linux-raw-sys 0.9.3", 2901 | "windows-sys 0.59.0", 2902 | ] 2903 | 2904 | [[package]] 2905 | name = "ryu" 2906 | version = "1.0.18" 2907 | source = "registry+https://github.com/rust-lang/crates.io-index" 2908 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 2909 | 2910 | [[package]] 2911 | name = "same-file" 2912 | version = "1.0.6" 2913 | source = "registry+https://github.com/rust-lang/crates.io-index" 2914 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2915 | dependencies = [ 2916 | "winapi-util", 2917 | ] 2918 | 2919 | [[package]] 2920 | name = "schannel" 2921 | version = "0.1.26" 2922 | source = "registry+https://github.com/rust-lang/crates.io-index" 2923 | checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" 2924 | dependencies = [ 2925 | "windows-sys 0.59.0", 2926 | ] 2927 | 2928 | [[package]] 2929 | name = "scopeguard" 2930 | version = "1.2.0" 2931 | source = "registry+https://github.com/rust-lang/crates.io-index" 2932 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2933 | 2934 | [[package]] 2935 | name = "sec1" 2936 | version = "0.7.3" 2937 | source = "registry+https://github.com/rust-lang/crates.io-index" 2938 | checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 2939 | dependencies = [ 2940 | "base16ct", 2941 | "der", 2942 | "generic-array", 2943 | "pkcs8", 2944 | "subtle", 2945 | "zeroize", 2946 | ] 2947 | 2948 | [[package]] 2949 | name = "security-framework" 2950 | version = "3.2.0" 2951 | source = "registry+https://github.com/rust-lang/crates.io-index" 2952 | checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" 2953 | dependencies = [ 2954 | "bitflags", 2955 | "core-foundation", 2956 | "core-foundation-sys", 2957 | "libc", 2958 | "security-framework-sys", 2959 | ] 2960 | 2961 | [[package]] 2962 | name = "security-framework-sys" 2963 | version = "2.14.0" 2964 | source = "registry+https://github.com/rust-lang/crates.io-index" 2965 | checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" 2966 | dependencies = [ 2967 | "core-foundation-sys", 2968 | "libc", 2969 | ] 2970 | 2971 | [[package]] 2972 | name = "semver" 2973 | version = "1.0.26" 2974 | source = "registry+https://github.com/rust-lang/crates.io-index" 2975 | checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" 2976 | dependencies = [ 2977 | "serde", 2978 | ] 2979 | 2980 | [[package]] 2981 | name = "serde" 2982 | version = "1.0.217" 2983 | source = "registry+https://github.com/rust-lang/crates.io-index" 2984 | checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" 2985 | dependencies = [ 2986 | "serde_derive", 2987 | ] 2988 | 2989 | [[package]] 2990 | name = "serde-untagged" 2991 | version = "0.1.6" 2992 | source = "registry+https://github.com/rust-lang/crates.io-index" 2993 | checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" 2994 | dependencies = [ 2995 | "erased-serde", 2996 | "serde", 2997 | "typeid", 2998 | ] 2999 | 3000 | [[package]] 3001 | name = "serde-value" 3002 | version = "0.7.0" 3003 | source = "registry+https://github.com/rust-lang/crates.io-index" 3004 | checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" 3005 | dependencies = [ 3006 | "ordered-float", 3007 | "serde", 3008 | ] 3009 | 3010 | [[package]] 3011 | name = "serde_derive" 3012 | version = "1.0.217" 3013 | source = "registry+https://github.com/rust-lang/crates.io-index" 3014 | checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" 3015 | dependencies = [ 3016 | "proc-macro2", 3017 | "quote", 3018 | "syn", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "serde_ignored" 3023 | version = "0.1.10" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" 3026 | dependencies = [ 3027 | "serde", 3028 | ] 3029 | 3030 | [[package]] 3031 | name = "serde_json" 3032 | version = "1.0.140" 3033 | source = "registry+https://github.com/rust-lang/crates.io-index" 3034 | checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" 3035 | dependencies = [ 3036 | "itoa", 3037 | "memchr", 3038 | "ryu", 3039 | "serde", 3040 | ] 3041 | 3042 | [[package]] 3043 | name = "serde_spanned" 3044 | version = "0.6.8" 3045 | source = "registry+https://github.com/rust-lang/crates.io-index" 3046 | checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" 3047 | dependencies = [ 3048 | "serde", 3049 | ] 3050 | 3051 | [[package]] 3052 | name = "sha1" 3053 | version = "0.10.6" 3054 | source = "registry+https://github.com/rust-lang/crates.io-index" 3055 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3056 | dependencies = [ 3057 | "cfg-if", 3058 | "cpufeatures", 3059 | "digest", 3060 | ] 3061 | 3062 | [[package]] 3063 | name = "sha1_smol" 3064 | version = "1.0.1" 3065 | source = "registry+https://github.com/rust-lang/crates.io-index" 3066 | checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" 3067 | 3068 | [[package]] 3069 | name = "sha2" 3070 | version = "0.10.8" 3071 | source = "registry+https://github.com/rust-lang/crates.io-index" 3072 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 3073 | dependencies = [ 3074 | "cfg-if", 3075 | "cpufeatures", 3076 | "digest", 3077 | ] 3078 | 3079 | [[package]] 3080 | name = "sharded-slab" 3081 | version = "0.1.7" 3082 | source = "registry+https://github.com/rust-lang/crates.io-index" 3083 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 3084 | dependencies = [ 3085 | "lazy_static", 3086 | ] 3087 | 3088 | [[package]] 3089 | name = "shell-escape" 3090 | version = "0.1.5" 3091 | source = "registry+https://github.com/rust-lang/crates.io-index" 3092 | checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" 3093 | 3094 | [[package]] 3095 | name = "shell-words" 3096 | version = "1.1.0" 3097 | source = "registry+https://github.com/rust-lang/crates.io-index" 3098 | checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" 3099 | 3100 | [[package]] 3101 | name = "shlex" 3102 | version = "1.3.0" 3103 | source = "registry+https://github.com/rust-lang/crates.io-index" 3104 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3105 | 3106 | [[package]] 3107 | name = "signature" 3108 | version = "2.2.0" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 3111 | dependencies = [ 3112 | "digest", 3113 | "rand_core 0.6.4", 3114 | ] 3115 | 3116 | [[package]] 3117 | name = "sized-chunks" 3118 | version = "0.6.5" 3119 | source = "registry+https://github.com/rust-lang/crates.io-index" 3120 | checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" 3121 | dependencies = [ 3122 | "bitmaps", 3123 | "typenum", 3124 | ] 3125 | 3126 | [[package]] 3127 | name = "smallvec" 3128 | version = "1.13.2" 3129 | source = "registry+https://github.com/rust-lang/crates.io-index" 3130 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 3131 | 3132 | [[package]] 3133 | name = "socket2" 3134 | version = "0.5.8" 3135 | source = "registry+https://github.com/rust-lang/crates.io-index" 3136 | checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 3137 | dependencies = [ 3138 | "libc", 3139 | "windows-sys 0.52.0", 3140 | ] 3141 | 3142 | [[package]] 3143 | name = "spki" 3144 | version = "0.7.3" 3145 | source = "registry+https://github.com/rust-lang/crates.io-index" 3146 | checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 3147 | dependencies = [ 3148 | "base64ct", 3149 | "der", 3150 | ] 3151 | 3152 | [[package]] 3153 | name = "stable_deref_trait" 3154 | version = "1.2.0" 3155 | source = "registry+https://github.com/rust-lang/crates.io-index" 3156 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 3157 | 3158 | [[package]] 3159 | name = "static_assertions" 3160 | version = "1.1.0" 3161 | source = "registry+https://github.com/rust-lang/crates.io-index" 3162 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3163 | 3164 | [[package]] 3165 | name = "strsim" 3166 | version = "0.11.1" 3167 | source = "registry+https://github.com/rust-lang/crates.io-index" 3168 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 3169 | 3170 | [[package]] 3171 | name = "subtle" 3172 | version = "2.6.1" 3173 | source = "registry+https://github.com/rust-lang/crates.io-index" 3174 | checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 3175 | 3176 | [[package]] 3177 | name = "supports-hyperlinks" 3178 | version = "3.1.0" 3179 | source = "registry+https://github.com/rust-lang/crates.io-index" 3180 | checksum = "804f44ed3c63152de6a9f90acbea1a110441de43006ea51bcce8f436196a288b" 3181 | 3182 | [[package]] 3183 | name = "supports-unicode" 3184 | version = "3.0.0" 3185 | source = "registry+https://github.com/rust-lang/crates.io-index" 3186 | checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" 3187 | 3188 | [[package]] 3189 | name = "syn" 3190 | version = "2.0.101" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" 3193 | dependencies = [ 3194 | "proc-macro2", 3195 | "quote", 3196 | "unicode-ident", 3197 | ] 3198 | 3199 | [[package]] 3200 | name = "synstructure" 3201 | version = "0.13.1" 3202 | source = "registry+https://github.com/rust-lang/crates.io-index" 3203 | checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 3204 | dependencies = [ 3205 | "proc-macro2", 3206 | "quote", 3207 | "syn", 3208 | ] 3209 | 3210 | [[package]] 3211 | name = "tar" 3212 | version = "0.4.43" 3213 | source = "registry+https://github.com/rust-lang/crates.io-index" 3214 | checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" 3215 | dependencies = [ 3216 | "filetime", 3217 | "libc", 3218 | ] 3219 | 3220 | [[package]] 3221 | name = "tempfile" 3222 | version = "3.20.0" 3223 | source = "registry+https://github.com/rust-lang/crates.io-index" 3224 | checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" 3225 | dependencies = [ 3226 | "fastrand", 3227 | "getrandom 0.3.2", 3228 | "once_cell", 3229 | "rustix 1.0.3", 3230 | "windows-sys 0.59.0", 3231 | ] 3232 | 3233 | [[package]] 3234 | name = "terminal_size" 3235 | version = "0.4.1" 3236 | source = "registry+https://github.com/rust-lang/crates.io-index" 3237 | checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" 3238 | dependencies = [ 3239 | "rustix 0.38.43", 3240 | "windows-sys 0.59.0", 3241 | ] 3242 | 3243 | [[package]] 3244 | name = "termtree" 3245 | version = "0.4.1" 3246 | source = "registry+https://github.com/rust-lang/crates.io-index" 3247 | checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" 3248 | 3249 | [[package]] 3250 | name = "thiserror" 3251 | version = "1.0.69" 3252 | source = "registry+https://github.com/rust-lang/crates.io-index" 3253 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 3254 | dependencies = [ 3255 | "thiserror-impl 1.0.69", 3256 | ] 3257 | 3258 | [[package]] 3259 | name = "thiserror" 3260 | version = "2.0.11" 3261 | source = "registry+https://github.com/rust-lang/crates.io-index" 3262 | checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" 3263 | dependencies = [ 3264 | "thiserror-impl 2.0.11", 3265 | ] 3266 | 3267 | [[package]] 3268 | name = "thiserror-impl" 3269 | version = "1.0.69" 3270 | source = "registry+https://github.com/rust-lang/crates.io-index" 3271 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 3272 | dependencies = [ 3273 | "proc-macro2", 3274 | "quote", 3275 | "syn", 3276 | ] 3277 | 3278 | [[package]] 3279 | name = "thiserror-impl" 3280 | version = "2.0.11" 3281 | source = "registry+https://github.com/rust-lang/crates.io-index" 3282 | checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" 3283 | dependencies = [ 3284 | "proc-macro2", 3285 | "quote", 3286 | "syn", 3287 | ] 3288 | 3289 | [[package]] 3290 | name = "thread_local" 3291 | version = "1.1.8" 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" 3293 | checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 3294 | dependencies = [ 3295 | "cfg-if", 3296 | "once_cell", 3297 | ] 3298 | 3299 | [[package]] 3300 | name = "time" 3301 | version = "0.3.37" 3302 | source = "registry+https://github.com/rust-lang/crates.io-index" 3303 | checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" 3304 | dependencies = [ 3305 | "deranged", 3306 | "itoa", 3307 | "num-conv", 3308 | "powerfmt", 3309 | "serde", 3310 | "time-core", 3311 | "time-macros", 3312 | ] 3313 | 3314 | [[package]] 3315 | name = "time-core" 3316 | version = "0.1.2" 3317 | source = "registry+https://github.com/rust-lang/crates.io-index" 3318 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 3319 | 3320 | [[package]] 3321 | name = "time-macros" 3322 | version = "0.2.19" 3323 | source = "registry+https://github.com/rust-lang/crates.io-index" 3324 | checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" 3325 | dependencies = [ 3326 | "num-conv", 3327 | "time-core", 3328 | ] 3329 | 3330 | [[package]] 3331 | name = "tinystr" 3332 | version = "0.7.6" 3333 | source = "registry+https://github.com/rust-lang/crates.io-index" 3334 | checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 3335 | dependencies = [ 3336 | "displaydoc", 3337 | "zerovec", 3338 | ] 3339 | 3340 | [[package]] 3341 | name = "tinyvec" 3342 | version = "1.8.1" 3343 | source = "registry+https://github.com/rust-lang/crates.io-index" 3344 | checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" 3345 | dependencies = [ 3346 | "tinyvec_macros", 3347 | ] 3348 | 3349 | [[package]] 3350 | name = "tinyvec_macros" 3351 | version = "0.1.1" 3352 | source = "registry+https://github.com/rust-lang/crates.io-index" 3353 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3354 | 3355 | [[package]] 3356 | name = "toml" 3357 | version = "0.8.22" 3358 | source = "registry+https://github.com/rust-lang/crates.io-index" 3359 | checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" 3360 | dependencies = [ 3361 | "serde", 3362 | "serde_spanned", 3363 | "toml_datetime", 3364 | "toml_edit", 3365 | ] 3366 | 3367 | [[package]] 3368 | name = "toml_datetime" 3369 | version = "0.6.9" 3370 | source = "registry+https://github.com/rust-lang/crates.io-index" 3371 | checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" 3372 | dependencies = [ 3373 | "serde", 3374 | ] 3375 | 3376 | [[package]] 3377 | name = "toml_edit" 3378 | version = "0.22.26" 3379 | source = "registry+https://github.com/rust-lang/crates.io-index" 3380 | checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" 3381 | dependencies = [ 3382 | "indexmap", 3383 | "serde", 3384 | "serde_spanned", 3385 | "toml_datetime", 3386 | "toml_write", 3387 | "winnow 0.7.10", 3388 | ] 3389 | 3390 | [[package]] 3391 | name = "toml_write" 3392 | version = "0.1.1" 3393 | source = "registry+https://github.com/rust-lang/crates.io-index" 3394 | checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" 3395 | 3396 | [[package]] 3397 | name = "tracing" 3398 | version = "0.1.41" 3399 | source = "registry+https://github.com/rust-lang/crates.io-index" 3400 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 3401 | dependencies = [ 3402 | "pin-project-lite", 3403 | "tracing-attributes", 3404 | "tracing-core", 3405 | ] 3406 | 3407 | [[package]] 3408 | name = "tracing-attributes" 3409 | version = "0.1.28" 3410 | source = "registry+https://github.com/rust-lang/crates.io-index" 3411 | checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" 3412 | dependencies = [ 3413 | "proc-macro2", 3414 | "quote", 3415 | "syn", 3416 | ] 3417 | 3418 | [[package]] 3419 | name = "tracing-chrome" 3420 | version = "0.7.2" 3421 | source = "registry+https://github.com/rust-lang/crates.io-index" 3422 | checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724" 3423 | dependencies = [ 3424 | "serde_json", 3425 | "tracing-core", 3426 | "tracing-subscriber", 3427 | ] 3428 | 3429 | [[package]] 3430 | name = "tracing-core" 3431 | version = "0.1.33" 3432 | source = "registry+https://github.com/rust-lang/crates.io-index" 3433 | checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 3434 | dependencies = [ 3435 | "once_cell", 3436 | "valuable", 3437 | ] 3438 | 3439 | [[package]] 3440 | name = "tracing-log" 3441 | version = "0.2.0" 3442 | source = "registry+https://github.com/rust-lang/crates.io-index" 3443 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 3444 | dependencies = [ 3445 | "log", 3446 | "once_cell", 3447 | "tracing-core", 3448 | ] 3449 | 3450 | [[package]] 3451 | name = "tracing-subscriber" 3452 | version = "0.3.19" 3453 | source = "registry+https://github.com/rust-lang/crates.io-index" 3454 | checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" 3455 | dependencies = [ 3456 | "matchers", 3457 | "nu-ansi-term", 3458 | "once_cell", 3459 | "regex", 3460 | "sharded-slab", 3461 | "smallvec", 3462 | "thread_local", 3463 | "tracing", 3464 | "tracing-core", 3465 | "tracing-log", 3466 | ] 3467 | 3468 | [[package]] 3469 | name = "typeid" 3470 | version = "1.0.2" 3471 | source = "registry+https://github.com/rust-lang/crates.io-index" 3472 | checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" 3473 | 3474 | [[package]] 3475 | name = "typenum" 3476 | version = "1.17.0" 3477 | source = "registry+https://github.com/rust-lang/crates.io-index" 3478 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3479 | 3480 | [[package]] 3481 | name = "unicase" 3482 | version = "2.8.1" 3483 | source = "registry+https://github.com/rust-lang/crates.io-index" 3484 | checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" 3485 | 3486 | [[package]] 3487 | name = "unicode-bom" 3488 | version = "2.0.3" 3489 | source = "registry+https://github.com/rust-lang/crates.io-index" 3490 | checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" 3491 | 3492 | [[package]] 3493 | name = "unicode-ident" 3494 | version = "1.0.14" 3495 | source = "registry+https://github.com/rust-lang/crates.io-index" 3496 | checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" 3497 | 3498 | [[package]] 3499 | name = "unicode-normalization" 3500 | version = "0.1.24" 3501 | source = "registry+https://github.com/rust-lang/crates.io-index" 3502 | checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" 3503 | dependencies = [ 3504 | "tinyvec", 3505 | ] 3506 | 3507 | [[package]] 3508 | name = "unicode-width" 3509 | version = "0.2.0" 3510 | source = "registry+https://github.com/rust-lang/crates.io-index" 3511 | checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" 3512 | 3513 | [[package]] 3514 | name = "unicode-xid" 3515 | version = "0.2.6" 3516 | source = "registry+https://github.com/rust-lang/crates.io-index" 3517 | checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3518 | 3519 | [[package]] 3520 | name = "url" 3521 | version = "2.5.4" 3522 | source = "registry+https://github.com/rust-lang/crates.io-index" 3523 | checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 3524 | dependencies = [ 3525 | "form_urlencoded", 3526 | "idna", 3527 | "percent-encoding", 3528 | ] 3529 | 3530 | [[package]] 3531 | name = "utf16_iter" 3532 | version = "1.0.5" 3533 | source = "registry+https://github.com/rust-lang/crates.io-index" 3534 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 3535 | 3536 | [[package]] 3537 | name = "utf8_iter" 3538 | version = "1.0.4" 3539 | source = "registry+https://github.com/rust-lang/crates.io-index" 3540 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 3541 | 3542 | [[package]] 3543 | name = "utf8parse" 3544 | version = "0.2.2" 3545 | source = "registry+https://github.com/rust-lang/crates.io-index" 3546 | checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 3547 | 3548 | [[package]] 3549 | name = "valuable" 3550 | version = "0.1.0" 3551 | source = "registry+https://github.com/rust-lang/crates.io-index" 3552 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 3553 | 3554 | [[package]] 3555 | name = "vcpkg" 3556 | version = "0.2.15" 3557 | source = "registry+https://github.com/rust-lang/crates.io-index" 3558 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 3559 | 3560 | [[package]] 3561 | name = "version_check" 3562 | version = "0.9.5" 3563 | source = "registry+https://github.com/rust-lang/crates.io-index" 3564 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3565 | 3566 | [[package]] 3567 | name = "wait-timeout" 3568 | version = "0.2.0" 3569 | source = "registry+https://github.com/rust-lang/crates.io-index" 3570 | checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" 3571 | dependencies = [ 3572 | "libc", 3573 | ] 3574 | 3575 | [[package]] 3576 | name = "walkdir" 3577 | version = "2.5.0" 3578 | source = "registry+https://github.com/rust-lang/crates.io-index" 3579 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3580 | dependencies = [ 3581 | "same-file", 3582 | "winapi-util", 3583 | ] 3584 | 3585 | [[package]] 3586 | name = "wasi" 3587 | version = "0.11.0+wasi-snapshot-preview1" 3588 | source = "registry+https://github.com/rust-lang/crates.io-index" 3589 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3590 | 3591 | [[package]] 3592 | name = "wasi" 3593 | version = "0.14.2+wasi-0.2.4" 3594 | source = "registry+https://github.com/rust-lang/crates.io-index" 3595 | checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" 3596 | dependencies = [ 3597 | "wit-bindgen-rt", 3598 | ] 3599 | 3600 | [[package]] 3601 | name = "wasm-bindgen" 3602 | version = "0.2.100" 3603 | source = "registry+https://github.com/rust-lang/crates.io-index" 3604 | checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" 3605 | dependencies = [ 3606 | "cfg-if", 3607 | "once_cell", 3608 | "wasm-bindgen-macro", 3609 | ] 3610 | 3611 | [[package]] 3612 | name = "wasm-bindgen-backend" 3613 | version = "0.2.100" 3614 | source = "registry+https://github.com/rust-lang/crates.io-index" 3615 | checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" 3616 | dependencies = [ 3617 | "bumpalo", 3618 | "log", 3619 | "proc-macro2", 3620 | "quote", 3621 | "syn", 3622 | "wasm-bindgen-shared", 3623 | ] 3624 | 3625 | [[package]] 3626 | name = "wasm-bindgen-macro" 3627 | version = "0.2.100" 3628 | source = "registry+https://github.com/rust-lang/crates.io-index" 3629 | checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" 3630 | dependencies = [ 3631 | "quote", 3632 | "wasm-bindgen-macro-support", 3633 | ] 3634 | 3635 | [[package]] 3636 | name = "wasm-bindgen-macro-support" 3637 | version = "0.2.100" 3638 | source = "registry+https://github.com/rust-lang/crates.io-index" 3639 | checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" 3640 | dependencies = [ 3641 | "proc-macro2", 3642 | "quote", 3643 | "syn", 3644 | "wasm-bindgen-backend", 3645 | "wasm-bindgen-shared", 3646 | ] 3647 | 3648 | [[package]] 3649 | name = "wasm-bindgen-shared" 3650 | version = "0.2.100" 3651 | source = "registry+https://github.com/rust-lang/crates.io-index" 3652 | checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" 3653 | dependencies = [ 3654 | "unicode-ident", 3655 | ] 3656 | 3657 | [[package]] 3658 | name = "winapi" 3659 | version = "0.3.9" 3660 | source = "registry+https://github.com/rust-lang/crates.io-index" 3661 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3662 | dependencies = [ 3663 | "winapi-i686-pc-windows-gnu", 3664 | "winapi-x86_64-pc-windows-gnu", 3665 | ] 3666 | 3667 | [[package]] 3668 | name = "winapi-i686-pc-windows-gnu" 3669 | version = "0.4.0" 3670 | source = "registry+https://github.com/rust-lang/crates.io-index" 3671 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3672 | 3673 | [[package]] 3674 | name = "winapi-util" 3675 | version = "0.1.9" 3676 | source = "registry+https://github.com/rust-lang/crates.io-index" 3677 | checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" 3678 | dependencies = [ 3679 | "windows-sys 0.59.0", 3680 | ] 3681 | 3682 | [[package]] 3683 | name = "winapi-x86_64-pc-windows-gnu" 3684 | version = "0.4.0" 3685 | source = "registry+https://github.com/rust-lang/crates.io-index" 3686 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3687 | 3688 | [[package]] 3689 | name = "windows-sys" 3690 | version = "0.48.0" 3691 | source = "registry+https://github.com/rust-lang/crates.io-index" 3692 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3693 | dependencies = [ 3694 | "windows-targets 0.48.5", 3695 | ] 3696 | 3697 | [[package]] 3698 | name = "windows-sys" 3699 | version = "0.52.0" 3700 | source = "registry+https://github.com/rust-lang/crates.io-index" 3701 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3702 | dependencies = [ 3703 | "windows-targets 0.52.6", 3704 | ] 3705 | 3706 | [[package]] 3707 | name = "windows-sys" 3708 | version = "0.59.0" 3709 | source = "registry+https://github.com/rust-lang/crates.io-index" 3710 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 3711 | dependencies = [ 3712 | "windows-targets 0.52.6", 3713 | ] 3714 | 3715 | [[package]] 3716 | name = "windows-targets" 3717 | version = "0.48.5" 3718 | source = "registry+https://github.com/rust-lang/crates.io-index" 3719 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3720 | dependencies = [ 3721 | "windows_aarch64_gnullvm 0.48.5", 3722 | "windows_aarch64_msvc 0.48.5", 3723 | "windows_i686_gnu 0.48.5", 3724 | "windows_i686_msvc 0.48.5", 3725 | "windows_x86_64_gnu 0.48.5", 3726 | "windows_x86_64_gnullvm 0.48.5", 3727 | "windows_x86_64_msvc 0.48.5", 3728 | ] 3729 | 3730 | [[package]] 3731 | name = "windows-targets" 3732 | version = "0.52.6" 3733 | source = "registry+https://github.com/rust-lang/crates.io-index" 3734 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 3735 | dependencies = [ 3736 | "windows_aarch64_gnullvm 0.52.6", 3737 | "windows_aarch64_msvc 0.52.6", 3738 | "windows_i686_gnu 0.52.6", 3739 | "windows_i686_gnullvm", 3740 | "windows_i686_msvc 0.52.6", 3741 | "windows_x86_64_gnu 0.52.6", 3742 | "windows_x86_64_gnullvm 0.52.6", 3743 | "windows_x86_64_msvc 0.52.6", 3744 | ] 3745 | 3746 | [[package]] 3747 | name = "windows_aarch64_gnullvm" 3748 | version = "0.48.5" 3749 | source = "registry+https://github.com/rust-lang/crates.io-index" 3750 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3751 | 3752 | [[package]] 3753 | name = "windows_aarch64_gnullvm" 3754 | version = "0.52.6" 3755 | source = "registry+https://github.com/rust-lang/crates.io-index" 3756 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 3757 | 3758 | [[package]] 3759 | name = "windows_aarch64_msvc" 3760 | version = "0.48.5" 3761 | source = "registry+https://github.com/rust-lang/crates.io-index" 3762 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3763 | 3764 | [[package]] 3765 | name = "windows_aarch64_msvc" 3766 | version = "0.52.6" 3767 | source = "registry+https://github.com/rust-lang/crates.io-index" 3768 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 3769 | 3770 | [[package]] 3771 | name = "windows_i686_gnu" 3772 | version = "0.48.5" 3773 | source = "registry+https://github.com/rust-lang/crates.io-index" 3774 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3775 | 3776 | [[package]] 3777 | name = "windows_i686_gnu" 3778 | version = "0.52.6" 3779 | source = "registry+https://github.com/rust-lang/crates.io-index" 3780 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 3781 | 3782 | [[package]] 3783 | name = "windows_i686_gnullvm" 3784 | version = "0.52.6" 3785 | source = "registry+https://github.com/rust-lang/crates.io-index" 3786 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 3787 | 3788 | [[package]] 3789 | name = "windows_i686_msvc" 3790 | version = "0.48.5" 3791 | source = "registry+https://github.com/rust-lang/crates.io-index" 3792 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3793 | 3794 | [[package]] 3795 | name = "windows_i686_msvc" 3796 | version = "0.52.6" 3797 | source = "registry+https://github.com/rust-lang/crates.io-index" 3798 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 3799 | 3800 | [[package]] 3801 | name = "windows_x86_64_gnu" 3802 | version = "0.48.5" 3803 | source = "registry+https://github.com/rust-lang/crates.io-index" 3804 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3805 | 3806 | [[package]] 3807 | name = "windows_x86_64_gnu" 3808 | version = "0.52.6" 3809 | source = "registry+https://github.com/rust-lang/crates.io-index" 3810 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 3811 | 3812 | [[package]] 3813 | name = "windows_x86_64_gnullvm" 3814 | version = "0.48.5" 3815 | source = "registry+https://github.com/rust-lang/crates.io-index" 3816 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3817 | 3818 | [[package]] 3819 | name = "windows_x86_64_gnullvm" 3820 | version = "0.52.6" 3821 | source = "registry+https://github.com/rust-lang/crates.io-index" 3822 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 3823 | 3824 | [[package]] 3825 | name = "windows_x86_64_msvc" 3826 | version = "0.48.5" 3827 | source = "registry+https://github.com/rust-lang/crates.io-index" 3828 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3829 | 3830 | [[package]] 3831 | name = "windows_x86_64_msvc" 3832 | version = "0.52.6" 3833 | source = "registry+https://github.com/rust-lang/crates.io-index" 3834 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 3835 | 3836 | [[package]] 3837 | name = "winnow" 3838 | version = "0.6.22" 3839 | source = "registry+https://github.com/rust-lang/crates.io-index" 3840 | checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" 3841 | dependencies = [ 3842 | "memchr", 3843 | ] 3844 | 3845 | [[package]] 3846 | name = "winnow" 3847 | version = "0.7.10" 3848 | source = "registry+https://github.com/rust-lang/crates.io-index" 3849 | checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" 3850 | dependencies = [ 3851 | "memchr", 3852 | ] 3853 | 3854 | [[package]] 3855 | name = "wit-bindgen-rt" 3856 | version = "0.39.0" 3857 | source = "registry+https://github.com/rust-lang/crates.io-index" 3858 | checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" 3859 | dependencies = [ 3860 | "bitflags", 3861 | ] 3862 | 3863 | [[package]] 3864 | name = "write16" 3865 | version = "1.0.0" 3866 | source = "registry+https://github.com/rust-lang/crates.io-index" 3867 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 3868 | 3869 | [[package]] 3870 | name = "writeable" 3871 | version = "0.5.5" 3872 | source = "registry+https://github.com/rust-lang/crates.io-index" 3873 | checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 3874 | 3875 | [[package]] 3876 | name = "yoke" 3877 | version = "0.7.5" 3878 | source = "registry+https://github.com/rust-lang/crates.io-index" 3879 | checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 3880 | dependencies = [ 3881 | "serde", 3882 | "stable_deref_trait", 3883 | "yoke-derive", 3884 | "zerofrom", 3885 | ] 3886 | 3887 | [[package]] 3888 | name = "yoke-derive" 3889 | version = "0.7.5" 3890 | source = "registry+https://github.com/rust-lang/crates.io-index" 3891 | checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 3892 | dependencies = [ 3893 | "proc-macro2", 3894 | "quote", 3895 | "syn", 3896 | "synstructure", 3897 | ] 3898 | 3899 | [[package]] 3900 | name = "zerocopy" 3901 | version = "0.7.35" 3902 | source = "registry+https://github.com/rust-lang/crates.io-index" 3903 | checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" 3904 | dependencies = [ 3905 | "byteorder", 3906 | "zerocopy-derive", 3907 | ] 3908 | 3909 | [[package]] 3910 | name = "zerocopy-derive" 3911 | version = "0.7.35" 3912 | source = "registry+https://github.com/rust-lang/crates.io-index" 3913 | checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" 3914 | dependencies = [ 3915 | "proc-macro2", 3916 | "quote", 3917 | "syn", 3918 | ] 3919 | 3920 | [[package]] 3921 | name = "zerofrom" 3922 | version = "0.1.5" 3923 | source = "registry+https://github.com/rust-lang/crates.io-index" 3924 | checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" 3925 | dependencies = [ 3926 | "zerofrom-derive", 3927 | ] 3928 | 3929 | [[package]] 3930 | name = "zerofrom-derive" 3931 | version = "0.1.5" 3932 | source = "registry+https://github.com/rust-lang/crates.io-index" 3933 | checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" 3934 | dependencies = [ 3935 | "proc-macro2", 3936 | "quote", 3937 | "syn", 3938 | "synstructure", 3939 | ] 3940 | 3941 | [[package]] 3942 | name = "zeroize" 3943 | version = "1.8.1" 3944 | source = "registry+https://github.com/rust-lang/crates.io-index" 3945 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 3946 | 3947 | [[package]] 3948 | name = "zerovec" 3949 | version = "0.10.4" 3950 | source = "registry+https://github.com/rust-lang/crates.io-index" 3951 | checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" 3952 | dependencies = [ 3953 | "yoke", 3954 | "zerofrom", 3955 | "zerovec-derive", 3956 | ] 3957 | 3958 | [[package]] 3959 | name = "zerovec-derive" 3960 | version = "0.10.3" 3961 | source = "registry+https://github.com/rust-lang/crates.io-index" 3962 | checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" 3963 | dependencies = [ 3964 | "proc-macro2", 3965 | "quote", 3966 | "syn", 3967 | ] 3968 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["cargo-clone", "cargo-clone-core"] 3 | resolver = "2" 4 | 5 | [workspace.dependencies] 6 | anyhow = "1.0.98" 7 | cargo = "0.88" 8 | tempfile = "3.20.0" 9 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jan Likar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cargo-clone 2 | 3 | cargo-clone can be used to fetch the source code of a Rust crate from a registry. 4 | 5 | cargo clone [FLAGS] [OPTIONS] ... [-- ] 6 | 7 | cargo-clone is a [Cargo subcommand](https://github.com/rust-lang/cargo/wiki/Third-party-cargo-subcommands). 8 | 9 | # Installation & upgrading 10 | 11 | cargo install cargo-clone 12 | 13 | ## Usage 14 | 15 | cargo clone [FLAGS] [OPTIONS] ... [-- ] 16 | 17 | To download cargo-clone's code you would use 18 | 19 | cargo clone cargo-clone 20 | 21 | 22 | ### Specifying versions 23 | The latest available version is downloaded by default. 24 | If specific versions are desired, semver specifiers can be appended to crate names. 25 | 26 | 27 | cargo clone cargo-clone@1.0.0 28 | 29 | Versions are matched exactly by default, but other kinds of matching are also allowed. 30 | 31 | cargo clone cargo-clone@~1.0.0 32 | 33 | 34 | ### Cloning from git repositories 35 | Using the `--git` flag runs `git clone` on each git repository url extracted from crate's metadata. 36 | 37 | These lines are roughly equivalent: 38 | 39 | cargo clone --git cargo-clone 40 | git clone https://github.com/janlikar/cargo-clone 41 | 42 | The command fails if a crate does not have the repository field set to a valid git repository. 43 | 44 | 45 | ### Output directory 46 | Crates are downloaded into `$PWD/$CRATE_NAME` by default. 47 | 48 | The output dir can be specified as the last argument: 49 | 50 | cargo clone cargo-clone -- foo # Downloads into $PWD/foo 51 | 52 | If multiple packages are downloaded at the same time or if the directory contains a trailing slash, 53 | the packages will be downloaded into subdirectories of the path provided. 54 | 55 | cargo clone cargo-clone -- pkgs/ # Creates pkgs/cargo-clone/ 56 | cargo clone cargo serde -- pkgs2/ # Creates pkgs2/cargo and pkgs2/serde 57 | 58 | 59 | ## Contributing 60 | Contributions are welcome. Feel free to open a PR into develop branch. 61 | 62 | When running locally, you can run using `cargo run -- clone CRATE` or `cargo-clone clone CRATE`. 63 | 64 | By opening a PR you agree to license your code under Apache/MIT licenses. 65 | -------------------------------------------------------------------------------- /cargo-clone-core/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Jan Likar "] 3 | name = "cargo-clone-core" 4 | version = "0.2.4" 5 | edition = "2024" 6 | description = "A library to fetch the source code of a Rust crate" 7 | documentation = "https://github.com/JanLikar/cargo-clone" 8 | homepage = "https://github.com/JanLikar/cargo-clone" 9 | keywords = ["cargo", "subcommand", "clone"] 10 | license = "Apache-2.0/MIT" 11 | repository = "https://github.com/JanLikar/cargo-clone" 12 | 13 | [dependencies] 14 | anyhow.workspace = true 15 | cargo.workspace = true 16 | semver = "1.0.26" 17 | walkdir = "2.5.0" 18 | url = "2.5.4" 19 | 20 | [dev-dependencies] 21 | tempfile.workspace = true 22 | -------------------------------------------------------------------------------- /cargo-clone-core/src/cloner_builder.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2015 Jan Likar. 2 | // 3 | // Licensed under the Apache License, Version 2.0 or the MIT license 5 | // , at your 6 | // option. This file may not be copied, modified, or distributed 7 | // except according to those terms. 8 | 9 | use std::{env, path::PathBuf}; 10 | 11 | use anyhow::Context; 12 | use cargo::CargoResult; 13 | use cargo::util::context::GlobalContext; 14 | 15 | use crate::{Cloner, ClonerSource}; 16 | 17 | /// Builder for [`Cloner`]. 18 | #[derive(Debug, Default)] 19 | pub struct ClonerBuilder { 20 | context: Option, 21 | directory: Option, 22 | source: ClonerSource, 23 | use_git: bool, 24 | } 25 | 26 | impl ClonerBuilder { 27 | /// Creates a new [`ClonerBuilder`] that: 28 | /// - Uses crates.io as source. 29 | /// - Clones the crates into the current directory. 30 | pub fn new() -> Self { 31 | Self::default() 32 | } 33 | 34 | /// Use the specified cargo configuration, instead of the default one. 35 | pub fn with_context(self, context: GlobalContext) -> Self { 36 | Self { 37 | context: Some(context), 38 | ..self 39 | } 40 | } 41 | 42 | /// Clone into a different directory, instead of the current one. 43 | pub fn with_directory(self, directory: impl Into) -> Self { 44 | Self { 45 | directory: Some(directory.into()), 46 | ..self 47 | } 48 | } 49 | 50 | /// Clone from an alternative source, instead of crates.io. 51 | pub fn with_source(self, source: ClonerSource) -> Self { 52 | Self { source, ..self } 53 | } 54 | 55 | /// Clone the git repository present in the manifest metadata. 56 | pub fn with_git(self, use_git: bool) -> Self { 57 | Self { use_git, ..self } 58 | } 59 | 60 | /// Build the [`Cloner`]. 61 | pub fn build(self) -> CargoResult { 62 | let context = match self.context { 63 | Some(context) => context, 64 | None => GlobalContext::default().context("Unable to get cargo context.")?, 65 | }; 66 | 67 | let directory = match self.directory { 68 | Some(directory) => directory, 69 | None => env::current_dir().context("Unable to get current directory.")?, 70 | }; 71 | 72 | let srcid = self 73 | .source 74 | .cargo_source 75 | .to_source_id(&context) 76 | .context("can't determine the source id")?; 77 | 78 | Ok(Cloner { 79 | context, 80 | directory, 81 | srcid, 82 | use_git: self.use_git, 83 | }) 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /cargo-clone-core/src/lib.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2015 Jan Likar. 2 | // 3 | // Licensed under the Apache License, Version 2.0 or the MIT license 5 | // , at your 6 | // option. This file may not be copied, modified, or distributed 7 | // except according to those terms. 8 | 9 | //! Fetch the source code of a Rust crate from a registry. 10 | 11 | #![warn(missing_docs)] 12 | 13 | mod cloner_builder; 14 | mod source; 15 | 16 | pub use cloner_builder::*; 17 | pub use source::*; 18 | 19 | use std::fs; 20 | use std::path::Path; 21 | use std::path::PathBuf; 22 | use std::process::Command; 23 | 24 | use anyhow::{Context, bail}; 25 | 26 | use cargo::core::Package; 27 | use cargo::core::dependency::Dependency; 28 | use cargo::sources::registry::IndexSummary; 29 | use cargo::sources::source::QueryKind; 30 | use cargo::sources::source::Source; 31 | use cargo::sources::{PathSource, SourceConfigMap}; 32 | use cargo::util::cache_lock::CacheLockMode; 33 | use cargo::util::context::GlobalContext; 34 | use semver::VersionReq; 35 | 36 | use walkdir::WalkDir; 37 | 38 | // Re-export cargo types. 39 | pub use cargo::{core::SourceId, util::CargoResult}; 40 | 41 | /// Rust crate. 42 | #[derive(PartialEq, Eq, Debug)] 43 | pub struct Crate { 44 | name: String, 45 | version: Option, 46 | } 47 | 48 | impl Crate { 49 | /// Create a new [`Crate`]. 50 | /// If `version` is not specified, the latest version is chosen. 51 | pub fn new(name: String, version: Option) -> Crate { 52 | Crate { name, version } 53 | } 54 | } 55 | 56 | /// Clones a crate. 57 | pub struct Cloner { 58 | /// Cargo context. 59 | pub(crate) context: GlobalContext, 60 | /// Directory where the crates will be cloned. 61 | /// Each crate is cloned into a subdirectory of this directory. 62 | pub(crate) directory: PathBuf, 63 | /// Where the crates will be cloned from. 64 | pub(crate) srcid: SourceId, 65 | /// If true, use `git` to clone the git repository present in the manifest metadata. 66 | pub(crate) use_git: bool, 67 | } 68 | 69 | impl Cloner { 70 | /// Creates a new [`ClonerBuilder`] that: 71 | /// - Uses crates.io as source. 72 | /// - Clones the crates into the current directory. 73 | pub fn builder() -> ClonerBuilder { 74 | ClonerBuilder::new() 75 | } 76 | 77 | /// Clone the specified crate from registry or git repository. 78 | /// The crate is cloned in the directory specified by the [`ClonerBuilder`]. 79 | pub fn clone_in_dir(&self, crate_: &Crate) -> CargoResult<()> { 80 | let _lock = self 81 | .context 82 | .acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?; 83 | 84 | let mut src = get_source(&self.srcid, &self.context)?; 85 | 86 | self.clone_in(crate_, &self.directory, &mut src) 87 | } 88 | 89 | /// Clone the specified crates from registry or git repository. 90 | /// Each crate is cloned in a subdirectory named as the crate name. 91 | pub fn clone(&self, crates: &[Crate]) -> CargoResult<()> { 92 | let _lock = self 93 | .context 94 | .acquire_package_cache_lock(CacheLockMode::DownloadExclusive)?; 95 | 96 | let mut src = get_source(&self.srcid, &self.context)?; 97 | 98 | for crate_ in crates { 99 | let mut dest_path = self.directory.clone(); 100 | 101 | dest_path.push(&crate_.name); 102 | 103 | self.clone_in(crate_, &dest_path, &mut src)?; 104 | } 105 | 106 | Ok(()) 107 | } 108 | 109 | fn clone_in<'a, T>(&self, crate_: &Crate, dest_path: &Path, src: &mut T) -> CargoResult<()> 110 | where 111 | T: Source + 'a, 112 | { 113 | if !dest_path.exists() { 114 | fs::create_dir_all(dest_path)?; 115 | } 116 | 117 | self.context 118 | .shell() 119 | .verbose(|s| s.note(format!("Cloning into {:?}", &self.directory)))?; 120 | 121 | // Cloning into an existing directory is only allowed if the directory is empty. 122 | let is_empty = dest_path.read_dir()?.next().is_none(); 123 | if !is_empty { 124 | bail!( 125 | "destination path '{}' already exists and is not an empty directory.", 126 | dest_path.display() 127 | ); 128 | } 129 | 130 | self.clone_single(crate_, dest_path, src) 131 | } 132 | 133 | fn clone_single<'a, T>(&self, crate_: &Crate, dest_path: &Path, src: &mut T) -> CargoResult<()> 134 | where 135 | T: Source + 'a, 136 | { 137 | let pkg = select_pkg(&self.context, src, &crate_.name, crate_.version.as_deref())?; 138 | 139 | if self.use_git { 140 | let repo = &pkg.manifest().metadata().repository; 141 | 142 | if repo.is_none() { 143 | bail!( 144 | "Cannot clone {} from git repo because it is not specified in package's manifest.", 145 | &crate_.name 146 | ) 147 | } 148 | 149 | clone_git_repo(repo.as_ref().unwrap(), dest_path)?; 150 | } else { 151 | clone_directory(pkg.root(), dest_path)?; 152 | } 153 | 154 | Ok(()) 155 | } 156 | } 157 | 158 | fn get_source<'a>( 159 | srcid: &SourceId, 160 | context: &'a GlobalContext, 161 | ) -> CargoResult> { 162 | let mut source = if srcid.is_path() { 163 | let path = srcid.url().to_file_path().expect("path must be valid"); 164 | Box::new(PathSource::new(&path, *srcid, context)) 165 | } else { 166 | let map = SourceConfigMap::new(context)?; 167 | map.load(*srcid, &Default::default())? 168 | }; 169 | 170 | source.invalidate_cache(); 171 | Ok(source) 172 | } 173 | 174 | fn select_pkg<'a, T>( 175 | context: &GlobalContext, 176 | src: &mut T, 177 | name: &str, 178 | vers: Option<&str>, 179 | ) -> CargoResult 180 | where 181 | T: Source + 'a, 182 | { 183 | let dep = Dependency::parse(name, vers, src.source_id())?; 184 | let mut summaries = vec![]; 185 | 186 | loop { 187 | match src.query(&dep, QueryKind::Exact, &mut |summary| { 188 | summaries.push(summary) 189 | })? { 190 | std::task::Poll::Ready(()) => break, 191 | std::task::Poll::Pending => src.block_until_ready()?, 192 | } 193 | } 194 | 195 | let latest = summaries 196 | .iter() 197 | .filter_map(|idxs| match idxs { 198 | IndexSummary::Candidate(s) => Some(s), 199 | _ => None, 200 | }) 201 | .max_by_key(|s| s.version()); 202 | 203 | match latest { 204 | Some(l) => { 205 | context 206 | .shell() 207 | .note(format!("Downloading {} {}", name, l.version()))?; 208 | let pkg = Box::new(src).download_now(l.package_id(), context)?; 209 | Ok(pkg) 210 | } 211 | None => bail!("Package `{}@{}` not found", name, vers.unwrap_or("*.*.*")), 212 | } 213 | } 214 | 215 | fn parse_version_req(version: &str) -> CargoResult { 216 | // This function's main purpose is to treat "x.y.z" as "=x.y.z" 217 | // so specifying the version in CLI works as expected. 218 | let first = version.chars().next(); 219 | 220 | if first.is_none() { 221 | bail!("Version cannot be empty.") 222 | }; 223 | 224 | let is_req = "<>=^~".contains(first.unwrap()) || version.contains('*'); 225 | 226 | if is_req { 227 | let vers = VersionReq::parse(version) 228 | .with_context(|| format!("Invalid version requirement: `{version}`."))?; 229 | Ok(vers.to_string()) 230 | } else { 231 | Ok(format!("={version}")) 232 | } 233 | } 234 | 235 | // clone_directory copies the contents of one directory into another directory, which must 236 | // already exist. 237 | fn clone_directory(from: &Path, to: &Path) -> CargoResult<()> { 238 | if !to.is_dir() { 239 | bail!("Not a directory: {}", to.to_string_lossy()); 240 | } 241 | for entry in WalkDir::new(from) { 242 | let entry = entry.unwrap(); 243 | let file_type = entry.file_type(); 244 | let mut dest_path = to.to_owned(); 245 | dest_path.push(entry.path().strip_prefix(from).unwrap()); 246 | 247 | if entry.file_name() == ".cargo-ok" { 248 | continue; 249 | } 250 | 251 | if file_type.is_file() { 252 | // .cargo-ok is not wanted in this context 253 | fs::copy(entry.path(), &dest_path)?; 254 | } else if file_type.is_dir() { 255 | if dest_path == to { 256 | continue; 257 | } 258 | fs::create_dir(&dest_path)?; 259 | } 260 | } 261 | 262 | Ok(()) 263 | } 264 | 265 | fn clone_git_repo(repo: &str, to: &Path) -> CargoResult<()> { 266 | let status = Command::new("git") 267 | .arg("clone") 268 | .arg(repo) 269 | .arg(to.to_str().unwrap()) 270 | .status() 271 | .context("Failed to clone from git repo.")?; 272 | 273 | if !status.success() { 274 | bail!("Failed to clone from git repo.") 275 | } 276 | 277 | Ok(()) 278 | } 279 | 280 | /// Parses crate specifications like: crate, crate@x.y.z, crate@~23.4.5. 281 | pub fn parse_name_and_version(spec: &str) -> CargoResult { 282 | if !spec.contains('@') { 283 | return Ok(Crate::new(spec.to_owned(), None)); 284 | } 285 | 286 | let mut parts = spec.split('@'); 287 | let crate_ = parts 288 | .next() 289 | .context(format!("Crate name missing in `{spec}`."))?; 290 | let version = parts 291 | .next() 292 | .context(format!("Crate version missing in `{spec}`."))?; 293 | 294 | Ok(Crate::new( 295 | crate_.to_owned(), 296 | Some(parse_version_req(version)?), 297 | )) 298 | } 299 | 300 | #[cfg(test)] 301 | mod tests { 302 | use std::{env, path::PathBuf}; 303 | 304 | use super::*; 305 | use tempfile::tempdir; 306 | 307 | #[test] 308 | fn test_parse_version_req() { 309 | assert_eq!("=12.4.5", parse_version_req("12.4.5").unwrap()); 310 | assert_eq!("=12.4.5", parse_version_req("=12.4.5").unwrap()); 311 | assert_eq!("12.2.*", parse_version_req("12.2.*").unwrap()); 312 | } 313 | 314 | #[test] 315 | fn test_parse_version_req_invalid_req() { 316 | assert_eq!( 317 | "Invalid version requirement: `=foo`.", 318 | parse_version_req("=foo").unwrap_err().to_string() 319 | ); 320 | } 321 | 322 | #[test] 323 | fn test_clone_directory() { 324 | let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); 325 | let from = PathBuf::from(manifest_dir).join("tests/data"); 326 | let to = tempdir().unwrap(); 327 | let to_path = to.path(); 328 | 329 | clone_directory(&from, to_path).unwrap(); 330 | 331 | assert!(to_path.join("Cargo.toml").exists()); 332 | assert!(!to_path.join("cargo-ok").exists()); 333 | } 334 | 335 | #[test] 336 | fn test_clone_repo() { 337 | let to = tempdir().unwrap(); 338 | let to_path = to.path(); 339 | 340 | clone_git_repo("https://github.com/janlikar/cargo-clone", to_path).unwrap(); 341 | 342 | assert!(to_path.exists()); 343 | assert!(to_path.join(".git").exists()); 344 | } 345 | 346 | #[test] 347 | fn test_parse_name_and_version() { 348 | assert_eq!( 349 | parse_name_and_version("foo").unwrap(), 350 | Crate::new(String::from("foo"), None) 351 | ); 352 | assert_eq!( 353 | parse_name_and_version("foo@1.1.3").unwrap(), 354 | Crate::new(String::from("foo"), Some(String::from("=1.1.3"))) 355 | ); 356 | assert_eq!( 357 | parse_name_and_version("foo@~1.1.3").unwrap(), 358 | Crate::new(String::from("foo"), Some(String::from("~1.1.3"))) 359 | ); 360 | assert_eq!( 361 | parse_name_and_version("foo@1.1.*").unwrap(), 362 | Crate::new(String::from("foo"), Some(String::from("1.1.*"))) 363 | ); 364 | } 365 | } 366 | -------------------------------------------------------------------------------- /cargo-clone-core/src/source.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2015 Jan Likar. 2 | // 3 | // Licensed under the Apache License, Version 2.0 or the MIT license 5 | // , at your 6 | // option. This file may not be copied, modified, or distributed 7 | // except according to those terms. 8 | 9 | use cargo::util::GlobalContext; 10 | use cargo::{CargoResult, core::SourceId, util::IntoUrl}; 11 | use url::Url; 12 | 13 | /// Where to clone the crate from. 14 | #[derive(Debug, Default)] 15 | pub struct ClonerSource { 16 | pub(crate) cargo_source: CargoSource, 17 | } 18 | 19 | #[derive(Debug, Default)] 20 | pub(crate) enum CargoSource { 21 | #[default] 22 | CratesIo, 23 | Index(Url), 24 | LocalRegistry(String), 25 | Registry(String), 26 | } 27 | 28 | impl ClonerSource { 29 | /// Creates a [`ClonerSource`] from the name of the remote registry. 30 | pub fn registry(key: impl Into) -> Self { 31 | Self { 32 | cargo_source: CargoSource::Registry(key.into()), 33 | } 34 | } 35 | 36 | /// Creates a [`ClonerSource`] from a local registry path. 37 | pub fn local_registry(path: impl Into) -> Self { 38 | Self { 39 | cargo_source: CargoSource::LocalRegistry(path.into()), 40 | } 41 | } 42 | 43 | /// Creates a [`ClonerSource`] from a remote registry URL. 44 | pub fn index(index: impl AsRef) -> CargoResult { 45 | let index: &str = index.as_ref(); 46 | let cargo_source = CargoSource::Index(index.into_url()?); 47 | Ok(Self { cargo_source }) 48 | } 49 | 50 | /// Creates a [`ClonerSource`] from a remote registry URL. 51 | pub fn index_from_url(url: Url) -> Self { 52 | let cargo_source = CargoSource::Index(url); 53 | Self { cargo_source } 54 | } 55 | 56 | /// Creates a [`ClonerSource`] from [crates.io](https://crates.io/). 57 | pub fn crates_io() -> Self { 58 | Self { 59 | cargo_source: CargoSource::CratesIo, 60 | } 61 | } 62 | } 63 | 64 | impl CargoSource { 65 | pub(crate) fn to_source_id(&self, context: &GlobalContext) -> CargoResult { 66 | match self { 67 | CargoSource::CratesIo => SourceId::crates_io(context), 68 | CargoSource::Index(url) => SourceId::for_registry(url), 69 | CargoSource::LocalRegistry(path) => { 70 | SourceId::for_local_registry(&context.cwd().join(path)) 71 | } 72 | CargoSource::Registry(key) => SourceId::alt_registry(context, key), 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /cargo-clone-core/tests/data/.cargo-ok: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JanLikar/cargo-clone/54c890b478ef5758eb1b144a2a239d64993a315b/cargo-clone-core/tests/data/.cargo-ok -------------------------------------------------------------------------------- /cargo-clone-core/tests/data/Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JanLikar/cargo-clone/54c890b478ef5758eb1b144a2a239d64993a315b/cargo-clone-core/tests/data/Cargo.toml -------------------------------------------------------------------------------- /cargo-clone-core/tests/test_clone.rs: -------------------------------------------------------------------------------- 1 | use cargo_clone_core::ClonerBuilder; 2 | use tempfile::tempdir; 3 | 4 | #[test] 5 | fn test_from_registry_in_dir() { 6 | let temp_dir = tempdir().unwrap(); 7 | let output_path = temp_dir.path().join("cargo-clone"); 8 | 9 | assert!(!output_path.exists()); 10 | 11 | let crate_ = 12 | cargo_clone_core::Crate::new(String::from("cargo-clone"), Some(String::from("0.2.0"))); 13 | let directory = output_path.to_str().unwrap(); 14 | 15 | let cloner = ClonerBuilder::new() 16 | .with_directory(directory) 17 | .build() 18 | .unwrap(); 19 | 20 | cloner.clone_in_dir(&crate_).unwrap(); 21 | 22 | assert!(output_path.exists()); 23 | assert!(output_path.join("Cargo.toml").exists()); 24 | } 25 | 26 | #[test] 27 | fn test_from_registry() { 28 | let temp_dir = tempdir().unwrap(); 29 | let output_path = temp_dir.path().join("cargo-clone"); 30 | 31 | assert!(!output_path.exists()); 32 | 33 | let crate_ = 34 | cargo_clone_core::Crate::new(String::from("cargo-clone"), Some(String::from("0.2.0"))); 35 | let directory = output_path.to_str().unwrap(); 36 | 37 | let cloner = ClonerBuilder::new() 38 | .with_directory(directory) 39 | .build() 40 | .unwrap(); 41 | 42 | cloner.clone(&[crate_]).unwrap(); 43 | 44 | assert!(output_path.join("cargo-clone").exists()); 45 | assert!(output_path.join("cargo-clone").join("Cargo.toml").exists()); 46 | } 47 | 48 | #[test] 49 | fn test_dir_path() { 50 | // Test cargo clone CRATE DIR/ dumps into DIR/CRATE. 51 | let temp_dir = tempdir().unwrap(); 52 | let output_path = temp_dir.path().join("foo"); 53 | 54 | assert!(!output_path.exists()); 55 | 56 | let crates = vec![cargo_clone_core::Crate::new( 57 | String::from("cargo-clone"), 58 | Some(String::from("0.2.0")), 59 | )]; 60 | let directory = format!("{}/", output_path.to_str().unwrap()); 61 | 62 | let cloner = ClonerBuilder::new() 63 | .with_directory(directory) 64 | .build() 65 | .unwrap(); 66 | 67 | cloner.clone(&crates).unwrap(); 68 | 69 | assert!(output_path.join("cargo-clone").exists()); 70 | assert!(output_path.join("cargo-clone").join("Cargo.toml").exists()); 71 | } 72 | 73 | #[test] 74 | fn test_multi_crates() { 75 | let temp_dir = tempdir().unwrap(); 76 | let output_path = temp_dir.path().join("Test"); 77 | 78 | assert!(!output_path.exists()); 79 | 80 | let crates = vec![ 81 | cargo_clone_core::Crate::new(String::from("cargo-clone"), Some(String::from("0.2.0"))), 82 | cargo_clone_core::Crate::new(String::from("tokio"), None), 83 | ]; 84 | let directory = format!("{}/", output_path.to_str().unwrap()); 85 | 86 | let cloner = ClonerBuilder::new() 87 | .with_directory(directory) 88 | .build() 89 | .unwrap(); 90 | cloner.clone(&crates).unwrap(); 91 | 92 | assert!(output_path.join("cargo-clone").exists()); 93 | assert!(output_path.join("cargo-clone").join("Cargo.toml").exists()); 94 | assert!(output_path.join("tokio").exists()); 95 | assert!(output_path.join("tokio").join("Cargo.toml").exists()); 96 | } 97 | -------------------------------------------------------------------------------- /cargo-clone/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Jan Likar "] 3 | description = "A cargo subcommand to fetch the source code of a Rust crate" 4 | documentation = "https://github.com/JanLikar/cargo-clone" 5 | homepage = "https://github.com/JanLikar/cargo-clone" 6 | keywords = ["cargo", "subcommand", "clone"] 7 | license = "Apache-2.0/MIT" 8 | name = "cargo-clone" 9 | readme = "../README.md" 10 | repository = "https://github.com/JanLikar/cargo-clone" 11 | version = "1.2.4" 12 | edition = "2024" 13 | 14 | [dependencies] 15 | cargo-clone-core = { path = "../cargo-clone-core", version = "0.2" } 16 | anyhow.workspace = true 17 | cargo.workspace = true 18 | clap = { version = "4.5.39", features = ["derive"] } 19 | 20 | [dev-dependencies] 21 | tempfile.workspace = true 22 | assert_cmd = "2.0" 23 | 24 | [features] 25 | vendored-openssl = ["cargo/vendored-openssl"] 26 | -------------------------------------------------------------------------------- /cargo-clone/src/args.rs: -------------------------------------------------------------------------------- 1 | use std::fmt; 2 | 3 | use clap::{Parser, ValueEnum}; 4 | 5 | #[derive(Debug, Parser)] 6 | #[command(name = "cargo")] 7 | #[command(bin_name = "cargo")] 8 | pub enum Command { 9 | #[command(name = "clone")] 10 | #[command(arg_required_else_help = true)] 11 | #[command(about, author, version)] 12 | Clone(CloneOpt), 13 | } 14 | 15 | #[derive(Debug, Clone, clap::Args)] 16 | pub struct CloneOpt { 17 | /// Terminal coloring. 18 | #[clap(long, value_enum, value_name = "COLORING")] 19 | pub color: Option, 20 | /// Use verbose output. 21 | #[clap(short)] 22 | pub verbose: bool, 23 | /// Print less output to stdout. 24 | #[clap(short)] 25 | pub quiet: bool, 26 | /// A registry name from Cargo config to clone the specified crate from. 27 | #[clap(long, conflicts_with("index"), value_name = "REGISTRY")] 28 | pub registry: Option, 29 | /// Registry index to install from. 30 | #[clap(long, conflicts_with("registry"), value_name = "URL")] 31 | pub index: Option, 32 | /// A local registry path to clone the specified crate from. 33 | #[clap( 34 | long, 35 | conflicts_with("index"), 36 | conflicts_with("registry"), 37 | value_name = "PATH" 38 | )] 39 | pub local_registry: Option, 40 | /// Clone from a repository specified in package's metadata. 41 | #[clap(long)] 42 | pub git: bool, 43 | /// The crates to be downloaded. Versions may also be specified and are matched exactly by default. 44 | /// Examples: 'cargo-clone@1.0.0' 'cargo-clone@~1.0.0'. 45 | pub crate_: Vec, 46 | /// The destination directory. If it ends in a slash, crates will be placed into its subdirectories. 47 | #[clap(last = true)] 48 | pub directory: Option, 49 | } 50 | 51 | #[derive(Debug, Clone, Copy, ValueEnum)] 52 | pub enum Color { 53 | Auto, 54 | Always, 55 | Never, 56 | } 57 | 58 | impl fmt::Display for Color { 59 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 60 | match self { 61 | Self::Always => write!(f, "always"), 62 | Self::Auto => write!(f, "auto"), 63 | Self::Never => write!(f, "never"), 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /cargo-clone/src/main.rs: -------------------------------------------------------------------------------- 1 | // Copyright 2015 Jan Likar. 2 | // 3 | // Licensed under the Apache License, Version 2.0 or the MIT license 5 | // , at your 6 | // option. This file may not be copied, modified, or distributed 7 | // except according to those terms. 8 | 9 | mod args; 10 | 11 | use anyhow::Context; 12 | use args::{CloneOpt, Command}; 13 | use cargo::util::context::GlobalContext; 14 | use cargo_clone_core::{ClonerBuilder, ClonerSource}; 15 | use clap::Parser; 16 | 17 | type Result = std::result::Result; 18 | 19 | fn main() { 20 | let Command::Clone(ref args) = Command::parse(); 21 | 22 | if let Err(e) = execute(args) { 23 | let config = cargo_context(args).expect("Unable to get Cargo context."); 24 | let error_msg = format!("{:?}", e); 25 | config.shell().error(error_msg).unwrap(); 26 | std::process::exit(101); 27 | } 28 | } 29 | 30 | fn cargo_context(matches: &CloneOpt) -> Result { 31 | let verbose = u32::from(matches.verbose); 32 | 33 | let mut context = GlobalContext::default()?; 34 | let color = matches.color.map(|c| c.to_string()); 35 | context.configure( 36 | verbose, 37 | matches.quiet, 38 | color.as_deref(), 39 | false, 40 | false, 41 | false, 42 | &None, 43 | &[], 44 | &[], 45 | )?; 46 | Ok(context) 47 | } 48 | 49 | fn source(opts: &CloneOpt) -> Result { 50 | let source = if let Some(registry) = &opts.registry { 51 | ClonerSource::registry(registry) 52 | } else if let Some(index) = &opts.index { 53 | ClonerSource::index(index)? 54 | } else if let Some(path) = &opts.local_registry { 55 | ClonerSource::local_registry(path) 56 | } else { 57 | ClonerSource::crates_io() 58 | }; 59 | Ok(source) 60 | } 61 | 62 | pub fn execute(opts: &CloneOpt) -> Result<()> { 63 | let source = source(opts).context("invalid source")?; 64 | 65 | let crates = opts 66 | .crate_ 67 | .iter() 68 | .map(|c| c.as_str()) 69 | .map(cargo_clone_core::parse_name_and_version) 70 | .collect::>>()?; 71 | 72 | let context = cargo_context(opts)?; 73 | let mut cloner_builder = ClonerBuilder::new() 74 | .with_source(source) 75 | .with_context(context); 76 | let directory = opts.directory.as_deref(); 77 | if let Some(directory) = directory { 78 | cloner_builder = cloner_builder.with_directory(directory); 79 | } 80 | if opts.git { 81 | cloner_builder = cloner_builder.with_git(true); 82 | } 83 | 84 | let cloner = cloner_builder 85 | .build() 86 | .context("Failed to setup cargo-clone")?; 87 | 88 | let should_append_crate_dir = { 89 | let multiple_crates = crates.len() > 1; 90 | let can_clone_in_dir = directory.map(|d| d.ends_with('/')).unwrap_or(true); 91 | multiple_crates || can_clone_in_dir 92 | }; 93 | 94 | if should_append_crate_dir { 95 | cloner.clone(&crates) 96 | } else { 97 | cloner.clone_in_dir(&crates[0]) 98 | } 99 | .context("Error while cloning") 100 | } 101 | -------------------------------------------------------------------------------- /cargo-clone/tests/test_cli.rs: -------------------------------------------------------------------------------- 1 | use ::assert_cmd::prelude::*; 2 | use std::fs; 3 | use std::process::Command; 4 | use tempfile::tempdir; 5 | 6 | fn cargo_clone_cmd() -> Command { 7 | Command::cargo_bin("cargo-clone").expect("Unable to get the cargo-clone command.") 8 | } 9 | 10 | #[test] 11 | fn test_cli() { 12 | let temp_dir = tempdir().unwrap(); 13 | let output_path = temp_dir.path().join("cargo-clone"); 14 | 15 | assert!(!output_path.exists()); 16 | 17 | let status = cargo_clone_cmd() 18 | .arg("clone") 19 | .arg("cargo-clone") 20 | .arg("--") 21 | .arg(output_path.to_str().unwrap()) 22 | .status() 23 | .unwrap(); 24 | 25 | assert!(status.success()); 26 | assert!(output_path.exists()); 27 | assert!(output_path.join("Cargo.toml").exists()); 28 | } 29 | 30 | #[test] 31 | fn test_cli_no_directory() { 32 | let temp_dir = tempdir().unwrap(); 33 | let output_path = temp_dir.path().join("cargo-clone"); 34 | 35 | assert!(!output_path.exists()); 36 | 37 | let status = cargo_clone_cmd() 38 | .current_dir(temp_dir.path()) 39 | .arg("clone") 40 | .arg("cargo-clone") 41 | .status() 42 | .unwrap(); 43 | 44 | assert!(status.success()); 45 | assert!(output_path.exists()); 46 | assert!(output_path.join("Cargo.toml").exists()); 47 | } 48 | 49 | #[test] 50 | fn test_custom_index() { 51 | let temp_dir = tempdir().unwrap(); 52 | let output_path = temp_dir.path().join("cargo-clone"); 53 | 54 | assert!(!output_path.exists()); 55 | 56 | let status = cargo_clone_cmd() 57 | .arg("clone") 58 | .arg("--index") 59 | .arg("https://github.com/rust-lang/crates.io-index") 60 | .arg("cargo-clone") 61 | .arg("--") 62 | .arg(output_path.to_str().unwrap()) 63 | .status() 64 | .unwrap(); 65 | 66 | assert!(status.success()); 67 | assert!(output_path.exists()); 68 | assert!(output_path.join("Cargo.toml").exists()); 69 | } 70 | 71 | #[test] 72 | fn test_clone_into_existing() { 73 | let temp_dir = tempdir().unwrap(); 74 | let output_path = temp_dir.path(); 75 | 76 | let status = cargo_clone_cmd() 77 | .arg("clone") 78 | .arg("time") 79 | .arg("--") 80 | .arg(output_path.to_str().unwrap()) 81 | .status() 82 | .unwrap(); 83 | 84 | assert!(status.success()); 85 | assert!(output_path.exists()); 86 | assert!(output_path.join("Cargo.toml").exists()); 87 | } 88 | 89 | #[test] 90 | 91 | fn test_with_version() { 92 | let temp_dir = tempdir().unwrap(); 93 | let output_path = temp_dir.path().join("cargo-clone"); 94 | 95 | assert!(!output_path.exists()); 96 | 97 | let status = cargo_clone_cmd() 98 | .arg("clone") 99 | .arg("tokei@6.1.2") 100 | .arg("--") 101 | .arg(output_path.to_str().unwrap()) 102 | .status() 103 | .unwrap(); 104 | 105 | assert!(status.success()); 106 | assert!(output_path.exists()); 107 | assert!(output_path.join("Cargo.toml").exists()); 108 | 109 | fs::read_to_string(output_path.join("Cargo.toml")) 110 | .unwrap() 111 | .contains("version = \"6.1.2\""); 112 | } 113 | --------------------------------------------------------------------------------