A native webfishing installer for macos

Initial

+3
.gitignore
···
··· 1 + /target 2 + /build 3 + /.idea
+2319
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 = "addr2line" 7 + version = "0.24.2" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" 10 + dependencies = [ 11 + "gimli", 12 + ] 13 + 14 + [[package]] 15 + name = "adler2" 16 + version = "2.0.0" 17 + source = "registry+https://github.com/rust-lang/crates.io-index" 18 + checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" 19 + 20 + [[package]] 21 + name = "asky" 22 + version = "0.1.1" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "dfac9a487b76922077604f2da106badccc7bdd01674de28475a8ea3282792879" 25 + dependencies = [ 26 + "colored", 27 + "crossterm", 28 + ] 29 + 30 + [[package]] 31 + name = "async-channel" 32 + version = "1.9.0" 33 + source = "registry+https://github.com/rust-lang/crates.io-index" 34 + checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" 35 + dependencies = [ 36 + "concurrent-queue", 37 + "event-listener 2.5.3", 38 + "futures-core", 39 + ] 40 + 41 + [[package]] 42 + name = "async-channel" 43 + version = "2.3.1" 44 + source = "registry+https://github.com/rust-lang/crates.io-index" 45 + checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" 46 + dependencies = [ 47 + "concurrent-queue", 48 + "event-listener-strategy", 49 + "futures-core", 50 + "pin-project-lite", 51 + ] 52 + 53 + [[package]] 54 + name = "async-executor" 55 + version = "1.13.1" 56 + source = "registry+https://github.com/rust-lang/crates.io-index" 57 + checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" 58 + dependencies = [ 59 + "async-task", 60 + "concurrent-queue", 61 + "fastrand", 62 + "futures-lite", 63 + "slab", 64 + ] 65 + 66 + [[package]] 67 + name = "async-global-executor" 68 + version = "2.4.1" 69 + source = "registry+https://github.com/rust-lang/crates.io-index" 70 + checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" 71 + dependencies = [ 72 + "async-channel 2.3.1", 73 + "async-executor", 74 + "async-io", 75 + "async-lock", 76 + "blocking", 77 + "futures-lite", 78 + "once_cell", 79 + ] 80 + 81 + [[package]] 82 + name = "async-io" 83 + version = "2.4.0" 84 + source = "registry+https://github.com/rust-lang/crates.io-index" 85 + checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" 86 + dependencies = [ 87 + "async-lock", 88 + "cfg-if", 89 + "concurrent-queue", 90 + "futures-io", 91 + "futures-lite", 92 + "parking", 93 + "polling", 94 + "rustix", 95 + "slab", 96 + "tracing", 97 + "windows-sys 0.59.0", 98 + ] 99 + 100 + [[package]] 101 + name = "async-lock" 102 + version = "3.4.0" 103 + source = "registry+https://github.com/rust-lang/crates.io-index" 104 + checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" 105 + dependencies = [ 106 + "event-listener 5.3.1", 107 + "event-listener-strategy", 108 + "pin-project-lite", 109 + ] 110 + 111 + [[package]] 112 + name = "async-std" 113 + version = "1.13.0" 114 + source = "registry+https://github.com/rust-lang/crates.io-index" 115 + checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" 116 + dependencies = [ 117 + "async-channel 1.9.0", 118 + "async-global-executor", 119 + "async-io", 120 + "async-lock", 121 + "crossbeam-utils", 122 + "futures-channel", 123 + "futures-core", 124 + "futures-io", 125 + "futures-lite", 126 + "gloo-timers", 127 + "kv-log-macro", 128 + "log", 129 + "memchr", 130 + "once_cell", 131 + "pin-project-lite", 132 + "pin-utils", 133 + "slab", 134 + "wasm-bindgen-futures", 135 + ] 136 + 137 + [[package]] 138 + name = "async-task" 139 + version = "4.7.1" 140 + source = "registry+https://github.com/rust-lang/crates.io-index" 141 + checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 142 + 143 + [[package]] 144 + name = "atomic-waker" 145 + version = "1.1.2" 146 + source = "registry+https://github.com/rust-lang/crates.io-index" 147 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 148 + 149 + [[package]] 150 + name = "autocfg" 151 + version = "1.4.0" 152 + source = "registry+https://github.com/rust-lang/crates.io-index" 153 + checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" 154 + 155 + [[package]] 156 + name = "backtrace" 157 + version = "0.3.74" 158 + source = "registry+https://github.com/rust-lang/crates.io-index" 159 + checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" 160 + dependencies = [ 161 + "addr2line", 162 + "cfg-if", 163 + "libc", 164 + "miniz_oxide", 165 + "object", 166 + "rustc-demangle", 167 + "windows-targets 0.52.6", 168 + ] 169 + 170 + [[package]] 171 + name = "base64" 172 + version = "0.22.1" 173 + source = "registry+https://github.com/rust-lang/crates.io-index" 174 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 175 + 176 + [[package]] 177 + name = "bitflags" 178 + version = "1.3.2" 179 + source = "registry+https://github.com/rust-lang/crates.io-index" 180 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 181 + 182 + [[package]] 183 + name = "bitflags" 184 + version = "2.6.0" 185 + source = "registry+https://github.com/rust-lang/crates.io-index" 186 + checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" 187 + 188 + [[package]] 189 + name = "block-buffer" 190 + version = "0.10.4" 191 + source = "registry+https://github.com/rust-lang/crates.io-index" 192 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 193 + dependencies = [ 194 + "generic-array", 195 + ] 196 + 197 + [[package]] 198 + name = "blocking" 199 + version = "1.6.1" 200 + source = "registry+https://github.com/rust-lang/crates.io-index" 201 + checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" 202 + dependencies = [ 203 + "async-channel 2.3.1", 204 + "async-task", 205 + "futures-io", 206 + "futures-lite", 207 + "piper", 208 + ] 209 + 210 + [[package]] 211 + name = "bumpalo" 212 + version = "3.16.0" 213 + source = "registry+https://github.com/rust-lang/crates.io-index" 214 + checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 215 + 216 + [[package]] 217 + name = "bytes" 218 + version = "1.9.0" 219 + source = "registry+https://github.com/rust-lang/crates.io-index" 220 + checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" 221 + 222 + [[package]] 223 + name = "cc" 224 + version = "1.2.5" 225 + source = "registry+https://github.com/rust-lang/crates.io-index" 226 + checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" 227 + dependencies = [ 228 + "shlex", 229 + ] 230 + 231 + [[package]] 232 + name = "cfg-if" 233 + version = "1.0.0" 234 + source = "registry+https://github.com/rust-lang/crates.io-index" 235 + checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 236 + 237 + [[package]] 238 + name = "colored" 239 + version = "2.2.0" 240 + source = "registry+https://github.com/rust-lang/crates.io-index" 241 + checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" 242 + dependencies = [ 243 + "lazy_static", 244 + "windows-sys 0.59.0", 245 + ] 246 + 247 + [[package]] 248 + name = "concurrent-queue" 249 + version = "2.5.0" 250 + source = "registry+https://github.com/rust-lang/crates.io-index" 251 + checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 252 + dependencies = [ 253 + "crossbeam-utils", 254 + ] 255 + 256 + [[package]] 257 + name = "core-foundation" 258 + version = "0.9.4" 259 + source = "registry+https://github.com/rust-lang/crates.io-index" 260 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 261 + dependencies = [ 262 + "core-foundation-sys", 263 + "libc", 264 + ] 265 + 266 + [[package]] 267 + name = "core-foundation-sys" 268 + version = "0.8.7" 269 + source = "registry+https://github.com/rust-lang/crates.io-index" 270 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 271 + 272 + [[package]] 273 + name = "cpufeatures" 274 + version = "0.2.16" 275 + source = "registry+https://github.com/rust-lang/crates.io-index" 276 + checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" 277 + dependencies = [ 278 + "libc", 279 + ] 280 + 281 + [[package]] 282 + name = "crc" 283 + version = "3.2.1" 284 + source = "registry+https://github.com/rust-lang/crates.io-index" 285 + checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" 286 + dependencies = [ 287 + "crc-catalog", 288 + ] 289 + 290 + [[package]] 291 + name = "crc-catalog" 292 + version = "2.4.0" 293 + source = "registry+https://github.com/rust-lang/crates.io-index" 294 + checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 295 + 296 + [[package]] 297 + name = "crossbeam-deque" 298 + version = "0.8.6" 299 + source = "registry+https://github.com/rust-lang/crates.io-index" 300 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 301 + dependencies = [ 302 + "crossbeam-epoch", 303 + "crossbeam-utils", 304 + ] 305 + 306 + [[package]] 307 + name = "crossbeam-epoch" 308 + version = "0.9.18" 309 + source = "registry+https://github.com/rust-lang/crates.io-index" 310 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 311 + dependencies = [ 312 + "crossbeam-utils", 313 + ] 314 + 315 + [[package]] 316 + name = "crossbeam-utils" 317 + version = "0.8.21" 318 + source = "registry+https://github.com/rust-lang/crates.io-index" 319 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 320 + 321 + [[package]] 322 + name = "crossterm" 323 + version = "0.26.1" 324 + source = "registry+https://github.com/rust-lang/crates.io-index" 325 + checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" 326 + dependencies = [ 327 + "bitflags 1.3.2", 328 + "crossterm_winapi", 329 + "libc", 330 + "mio 0.8.11", 331 + "parking_lot", 332 + "signal-hook", 333 + "signal-hook-mio", 334 + "winapi", 335 + ] 336 + 337 + [[package]] 338 + name = "crossterm_winapi" 339 + version = "0.9.1" 340 + source = "registry+https://github.com/rust-lang/crates.io-index" 341 + checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" 342 + dependencies = [ 343 + "winapi", 344 + ] 345 + 346 + [[package]] 347 + name = "crypto-common" 348 + version = "0.1.6" 349 + source = "registry+https://github.com/rust-lang/crates.io-index" 350 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 351 + dependencies = [ 352 + "generic-array", 353 + "typenum", 354 + ] 355 + 356 + [[package]] 357 + name = "digest" 358 + version = "0.10.7" 359 + source = "registry+https://github.com/rust-lang/crates.io-index" 360 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 361 + dependencies = [ 362 + "block-buffer", 363 + "crypto-common", 364 + ] 365 + 366 + [[package]] 367 + name = "displaydoc" 368 + version = "0.2.5" 369 + source = "registry+https://github.com/rust-lang/crates.io-index" 370 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 371 + dependencies = [ 372 + "proc-macro2", 373 + "quote", 374 + "syn", 375 + ] 376 + 377 + [[package]] 378 + name = "either" 379 + version = "1.13.0" 380 + source = "registry+https://github.com/rust-lang/crates.io-index" 381 + checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" 382 + 383 + [[package]] 384 + name = "encoding_rs" 385 + version = "0.8.35" 386 + source = "registry+https://github.com/rust-lang/crates.io-index" 387 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 388 + dependencies = [ 389 + "cfg-if", 390 + ] 391 + 392 + [[package]] 393 + name = "equivalent" 394 + version = "1.0.1" 395 + source = "registry+https://github.com/rust-lang/crates.io-index" 396 + checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 397 + 398 + [[package]] 399 + name = "errno" 400 + version = "0.3.10" 401 + source = "registry+https://github.com/rust-lang/crates.io-index" 402 + checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" 403 + dependencies = [ 404 + "libc", 405 + "windows-sys 0.59.0", 406 + ] 407 + 408 + [[package]] 409 + name = "event-listener" 410 + version = "2.5.3" 411 + source = "registry+https://github.com/rust-lang/crates.io-index" 412 + checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 413 + 414 + [[package]] 415 + name = "event-listener" 416 + version = "5.3.1" 417 + source = "registry+https://github.com/rust-lang/crates.io-index" 418 + checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" 419 + dependencies = [ 420 + "concurrent-queue", 421 + "parking", 422 + "pin-project-lite", 423 + ] 424 + 425 + [[package]] 426 + name = "event-listener-strategy" 427 + version = "0.5.3" 428 + source = "registry+https://github.com/rust-lang/crates.io-index" 429 + checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" 430 + dependencies = [ 431 + "event-listener 5.3.1", 432 + "pin-project-lite", 433 + ] 434 + 435 + [[package]] 436 + name = "fastrand" 437 + version = "2.3.0" 438 + source = "registry+https://github.com/rust-lang/crates.io-index" 439 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 440 + 441 + [[package]] 442 + name = "fnv" 443 + version = "1.0.7" 444 + source = "registry+https://github.com/rust-lang/crates.io-index" 445 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 446 + 447 + [[package]] 448 + name = "foreign-types" 449 + version = "0.3.2" 450 + source = "registry+https://github.com/rust-lang/crates.io-index" 451 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 452 + dependencies = [ 453 + "foreign-types-shared", 454 + ] 455 + 456 + [[package]] 457 + name = "foreign-types-shared" 458 + version = "0.1.1" 459 + source = "registry+https://github.com/rust-lang/crates.io-index" 460 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 461 + 462 + [[package]] 463 + name = "form_urlencoded" 464 + version = "1.2.1" 465 + source = "registry+https://github.com/rust-lang/crates.io-index" 466 + checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 467 + dependencies = [ 468 + "percent-encoding", 469 + ] 470 + 471 + [[package]] 472 + name = "futures-channel" 473 + version = "0.3.31" 474 + source = "registry+https://github.com/rust-lang/crates.io-index" 475 + checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 476 + dependencies = [ 477 + "futures-core", 478 + ] 479 + 480 + [[package]] 481 + name = "futures-core" 482 + version = "0.3.31" 483 + source = "registry+https://github.com/rust-lang/crates.io-index" 484 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 485 + 486 + [[package]] 487 + name = "futures-io" 488 + version = "0.3.31" 489 + source = "registry+https://github.com/rust-lang/crates.io-index" 490 + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 491 + 492 + [[package]] 493 + name = "futures-lite" 494 + version = "2.5.0" 495 + source = "registry+https://github.com/rust-lang/crates.io-index" 496 + checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" 497 + dependencies = [ 498 + "fastrand", 499 + "futures-core", 500 + "futures-io", 501 + "parking", 502 + "pin-project-lite", 503 + ] 504 + 505 + [[package]] 506 + name = "futures-sink" 507 + version = "0.3.31" 508 + source = "registry+https://github.com/rust-lang/crates.io-index" 509 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 510 + 511 + [[package]] 512 + name = "futures-task" 513 + version = "0.3.31" 514 + source = "registry+https://github.com/rust-lang/crates.io-index" 515 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 516 + 517 + [[package]] 518 + name = "futures-util" 519 + version = "0.3.31" 520 + source = "registry+https://github.com/rust-lang/crates.io-index" 521 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 522 + dependencies = [ 523 + "futures-core", 524 + "futures-task", 525 + "pin-project-lite", 526 + "pin-utils", 527 + ] 528 + 529 + [[package]] 530 + name = "generic-array" 531 + version = "0.14.7" 532 + source = "registry+https://github.com/rust-lang/crates.io-index" 533 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 534 + dependencies = [ 535 + "typenum", 536 + "version_check", 537 + ] 538 + 539 + [[package]] 540 + name = "getrandom" 541 + version = "0.2.15" 542 + source = "registry+https://github.com/rust-lang/crates.io-index" 543 + checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 544 + dependencies = [ 545 + "cfg-if", 546 + "libc", 547 + "wasi", 548 + ] 549 + 550 + [[package]] 551 + name = "gimli" 552 + version = "0.31.1" 553 + source = "registry+https://github.com/rust-lang/crates.io-index" 554 + checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 555 + 556 + [[package]] 557 + name = "gloo-timers" 558 + version = "0.3.0" 559 + source = "registry+https://github.com/rust-lang/crates.io-index" 560 + checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 561 + dependencies = [ 562 + "futures-channel", 563 + "futures-core", 564 + "js-sys", 565 + "wasm-bindgen", 566 + ] 567 + 568 + [[package]] 569 + name = "h2" 570 + version = "0.4.7" 571 + source = "registry+https://github.com/rust-lang/crates.io-index" 572 + checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" 573 + dependencies = [ 574 + "atomic-waker", 575 + "bytes", 576 + "fnv", 577 + "futures-core", 578 + "futures-sink", 579 + "http", 580 + "indexmap", 581 + "slab", 582 + "tokio", 583 + "tokio-util", 584 + "tracing", 585 + ] 586 + 587 + [[package]] 588 + name = "hashbrown" 589 + version = "0.15.2" 590 + source = "registry+https://github.com/rust-lang/crates.io-index" 591 + checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" 592 + 593 + [[package]] 594 + name = "hermit-abi" 595 + version = "0.4.0" 596 + source = "registry+https://github.com/rust-lang/crates.io-index" 597 + checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" 598 + 599 + [[package]] 600 + name = "home" 601 + version = "0.5.11" 602 + source = "registry+https://github.com/rust-lang/crates.io-index" 603 + checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" 604 + dependencies = [ 605 + "windows-sys 0.59.0", 606 + ] 607 + 608 + [[package]] 609 + name = "http" 610 + version = "1.2.0" 611 + source = "registry+https://github.com/rust-lang/crates.io-index" 612 + checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" 613 + dependencies = [ 614 + "bytes", 615 + "fnv", 616 + "itoa", 617 + ] 618 + 619 + [[package]] 620 + name = "http-body" 621 + version = "1.0.1" 622 + source = "registry+https://github.com/rust-lang/crates.io-index" 623 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 624 + dependencies = [ 625 + "bytes", 626 + "http", 627 + ] 628 + 629 + [[package]] 630 + name = "http-body-util" 631 + version = "0.1.2" 632 + source = "registry+https://github.com/rust-lang/crates.io-index" 633 + checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" 634 + dependencies = [ 635 + "bytes", 636 + "futures-util", 637 + "http", 638 + "http-body", 639 + "pin-project-lite", 640 + ] 641 + 642 + [[package]] 643 + name = "httparse" 644 + version = "1.9.5" 645 + source = "registry+https://github.com/rust-lang/crates.io-index" 646 + checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" 647 + 648 + [[package]] 649 + name = "hyper" 650 + version = "1.5.2" 651 + source = "registry+https://github.com/rust-lang/crates.io-index" 652 + checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" 653 + dependencies = [ 654 + "bytes", 655 + "futures-channel", 656 + "futures-util", 657 + "h2", 658 + "http", 659 + "http-body", 660 + "httparse", 661 + "itoa", 662 + "pin-project-lite", 663 + "smallvec", 664 + "tokio", 665 + "want", 666 + ] 667 + 668 + [[package]] 669 + name = "hyper-rustls" 670 + version = "0.27.5" 671 + source = "registry+https://github.com/rust-lang/crates.io-index" 672 + checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" 673 + dependencies = [ 674 + "futures-util", 675 + "http", 676 + "hyper", 677 + "hyper-util", 678 + "rustls", 679 + "rustls-pki-types", 680 + "tokio", 681 + "tokio-rustls", 682 + "tower-service", 683 + ] 684 + 685 + [[package]] 686 + name = "hyper-tls" 687 + version = "0.6.0" 688 + source = "registry+https://github.com/rust-lang/crates.io-index" 689 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 690 + dependencies = [ 691 + "bytes", 692 + "http-body-util", 693 + "hyper", 694 + "hyper-util", 695 + "native-tls", 696 + "tokio", 697 + "tokio-native-tls", 698 + "tower-service", 699 + ] 700 + 701 + [[package]] 702 + name = "hyper-util" 703 + version = "0.1.10" 704 + source = "registry+https://github.com/rust-lang/crates.io-index" 705 + checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" 706 + dependencies = [ 707 + "bytes", 708 + "futures-channel", 709 + "futures-util", 710 + "http", 711 + "http-body", 712 + "hyper", 713 + "pin-project-lite", 714 + "socket2", 715 + "tokio", 716 + "tower-service", 717 + "tracing", 718 + ] 719 + 720 + [[package]] 721 + name = "icu_collections" 722 + version = "1.5.0" 723 + source = "registry+https://github.com/rust-lang/crates.io-index" 724 + checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 725 + dependencies = [ 726 + "displaydoc", 727 + "yoke", 728 + "zerofrom", 729 + "zerovec", 730 + ] 731 + 732 + [[package]] 733 + name = "icu_locid" 734 + version = "1.5.0" 735 + source = "registry+https://github.com/rust-lang/crates.io-index" 736 + checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 737 + dependencies = [ 738 + "displaydoc", 739 + "litemap", 740 + "tinystr", 741 + "writeable", 742 + "zerovec", 743 + ] 744 + 745 + [[package]] 746 + name = "icu_locid_transform" 747 + version = "1.5.0" 748 + source = "registry+https://github.com/rust-lang/crates.io-index" 749 + checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 750 + dependencies = [ 751 + "displaydoc", 752 + "icu_locid", 753 + "icu_locid_transform_data", 754 + "icu_provider", 755 + "tinystr", 756 + "zerovec", 757 + ] 758 + 759 + [[package]] 760 + name = "icu_locid_transform_data" 761 + version = "1.5.0" 762 + source = "registry+https://github.com/rust-lang/crates.io-index" 763 + checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" 764 + 765 + [[package]] 766 + name = "icu_normalizer" 767 + version = "1.5.0" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 770 + dependencies = [ 771 + "displaydoc", 772 + "icu_collections", 773 + "icu_normalizer_data", 774 + "icu_properties", 775 + "icu_provider", 776 + "smallvec", 777 + "utf16_iter", 778 + "utf8_iter", 779 + "write16", 780 + "zerovec", 781 + ] 782 + 783 + [[package]] 784 + name = "icu_normalizer_data" 785 + version = "1.5.0" 786 + source = "registry+https://github.com/rust-lang/crates.io-index" 787 + checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" 788 + 789 + [[package]] 790 + name = "icu_properties" 791 + version = "1.5.1" 792 + source = "registry+https://github.com/rust-lang/crates.io-index" 793 + checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" 794 + dependencies = [ 795 + "displaydoc", 796 + "icu_collections", 797 + "icu_locid_transform", 798 + "icu_properties_data", 799 + "icu_provider", 800 + "tinystr", 801 + "zerovec", 802 + ] 803 + 804 + [[package]] 805 + name = "icu_properties_data" 806 + version = "1.5.0" 807 + source = "registry+https://github.com/rust-lang/crates.io-index" 808 + checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" 809 + 810 + [[package]] 811 + name = "icu_provider" 812 + version = "1.5.0" 813 + source = "registry+https://github.com/rust-lang/crates.io-index" 814 + checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 815 + dependencies = [ 816 + "displaydoc", 817 + "icu_locid", 818 + "icu_provider_macros", 819 + "stable_deref_trait", 820 + "tinystr", 821 + "writeable", 822 + "yoke", 823 + "zerofrom", 824 + "zerovec", 825 + ] 826 + 827 + [[package]] 828 + name = "icu_provider_macros" 829 + version = "1.5.0" 830 + source = "registry+https://github.com/rust-lang/crates.io-index" 831 + checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 832 + dependencies = [ 833 + "proc-macro2", 834 + "quote", 835 + "syn", 836 + ] 837 + 838 + [[package]] 839 + name = "idna" 840 + version = "1.0.3" 841 + source = "registry+https://github.com/rust-lang/crates.io-index" 842 + checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" 843 + dependencies = [ 844 + "idna_adapter", 845 + "smallvec", 846 + "utf8_iter", 847 + ] 848 + 849 + [[package]] 850 + name = "idna_adapter" 851 + version = "1.2.0" 852 + source = "registry+https://github.com/rust-lang/crates.io-index" 853 + checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" 854 + dependencies = [ 855 + "icu_normalizer", 856 + "icu_properties", 857 + ] 858 + 859 + [[package]] 860 + name = "indexmap" 861 + version = "2.7.0" 862 + source = "registry+https://github.com/rust-lang/crates.io-index" 863 + checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" 864 + dependencies = [ 865 + "equivalent", 866 + "hashbrown", 867 + ] 868 + 869 + [[package]] 870 + name = "ipnet" 871 + version = "2.10.1" 872 + source = "registry+https://github.com/rust-lang/crates.io-index" 873 + checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" 874 + 875 + [[package]] 876 + name = "itoa" 877 + version = "1.0.14" 878 + source = "registry+https://github.com/rust-lang/crates.io-index" 879 + checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" 880 + 881 + [[package]] 882 + name = "js-sys" 883 + version = "0.3.76" 884 + source = "registry+https://github.com/rust-lang/crates.io-index" 885 + checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" 886 + dependencies = [ 887 + "once_cell", 888 + "wasm-bindgen", 889 + ] 890 + 891 + [[package]] 892 + name = "keyvalues-parser" 893 + version = "0.2.0" 894 + source = "registry+https://github.com/rust-lang/crates.io-index" 895 + checksum = "7e4c8354918309196302015ac9cae43362f1a13d0d5c5539a33b4c2fd2cd6d25" 896 + dependencies = [ 897 + "pest", 898 + "pest_derive", 899 + "thiserror 1.0.69", 900 + ] 901 + 902 + [[package]] 903 + name = "keyvalues-serde" 904 + version = "0.2.1" 905 + source = "registry+https://github.com/rust-lang/crates.io-index" 906 + checksum = "0447866c47c00f8bd1949618e8f63017cf93e985b4684dc28d784527e2882390" 907 + dependencies = [ 908 + "keyvalues-parser", 909 + "serde", 910 + "thiserror 1.0.69", 911 + ] 912 + 913 + [[package]] 914 + name = "kv-log-macro" 915 + version = "1.0.7" 916 + source = "registry+https://github.com/rust-lang/crates.io-index" 917 + checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 918 + dependencies = [ 919 + "log", 920 + ] 921 + 922 + [[package]] 923 + name = "lazy_static" 924 + version = "1.5.0" 925 + source = "registry+https://github.com/rust-lang/crates.io-index" 926 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 927 + 928 + [[package]] 929 + name = "libc" 930 + version = "0.2.169" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" 933 + 934 + [[package]] 935 + name = "linux-raw-sys" 936 + version = "0.4.14" 937 + source = "registry+https://github.com/rust-lang/crates.io-index" 938 + checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 939 + 940 + [[package]] 941 + name = "litemap" 942 + version = "0.7.4" 943 + source = "registry+https://github.com/rust-lang/crates.io-index" 944 + checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" 945 + 946 + [[package]] 947 + name = "lock_api" 948 + version = "0.4.12" 949 + source = "registry+https://github.com/rust-lang/crates.io-index" 950 + checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 951 + dependencies = [ 952 + "autocfg", 953 + "scopeguard", 954 + ] 955 + 956 + [[package]] 957 + name = "log" 958 + version = "0.4.22" 959 + source = "registry+https://github.com/rust-lang/crates.io-index" 960 + checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 961 + dependencies = [ 962 + "value-bag", 963 + ] 964 + 965 + [[package]] 966 + name = "memchr" 967 + version = "2.7.4" 968 + source = "registry+https://github.com/rust-lang/crates.io-index" 969 + checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 970 + 971 + [[package]] 972 + name = "mime" 973 + version = "0.3.17" 974 + source = "registry+https://github.com/rust-lang/crates.io-index" 975 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 976 + 977 + [[package]] 978 + name = "miniz_oxide" 979 + version = "0.8.2" 980 + source = "registry+https://github.com/rust-lang/crates.io-index" 981 + checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" 982 + dependencies = [ 983 + "adler2", 984 + ] 985 + 986 + [[package]] 987 + name = "mio" 988 + version = "0.8.11" 989 + source = "registry+https://github.com/rust-lang/crates.io-index" 990 + checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 991 + dependencies = [ 992 + "libc", 993 + "log", 994 + "wasi", 995 + "windows-sys 0.48.0", 996 + ] 997 + 998 + [[package]] 999 + name = "mio" 1000 + version = "1.0.3" 1001 + source = "registry+https://github.com/rust-lang/crates.io-index" 1002 + checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" 1003 + dependencies = [ 1004 + "libc", 1005 + "wasi", 1006 + "windows-sys 0.52.0", 1007 + ] 1008 + 1009 + [[package]] 1010 + name = "native-tls" 1011 + version = "0.2.12" 1012 + source = "registry+https://github.com/rust-lang/crates.io-index" 1013 + checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" 1014 + dependencies = [ 1015 + "libc", 1016 + "log", 1017 + "openssl", 1018 + "openssl-probe", 1019 + "openssl-sys", 1020 + "schannel", 1021 + "security-framework", 1022 + "security-framework-sys", 1023 + "tempfile", 1024 + ] 1025 + 1026 + [[package]] 1027 + name = "ntapi" 1028 + version = "0.4.1" 1029 + source = "registry+https://github.com/rust-lang/crates.io-index" 1030 + checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" 1031 + dependencies = [ 1032 + "winapi", 1033 + ] 1034 + 1035 + [[package]] 1036 + name = "object" 1037 + version = "0.36.7" 1038 + source = "registry+https://github.com/rust-lang/crates.io-index" 1039 + checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 1040 + dependencies = [ 1041 + "memchr", 1042 + ] 1043 + 1044 + [[package]] 1045 + name = "once_cell" 1046 + version = "1.20.2" 1047 + source = "registry+https://github.com/rust-lang/crates.io-index" 1048 + checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" 1049 + 1050 + [[package]] 1051 + name = "openssl" 1052 + version = "0.10.68" 1053 + source = "registry+https://github.com/rust-lang/crates.io-index" 1054 + checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" 1055 + dependencies = [ 1056 + "bitflags 2.6.0", 1057 + "cfg-if", 1058 + "foreign-types", 1059 + "libc", 1060 + "once_cell", 1061 + "openssl-macros", 1062 + "openssl-sys", 1063 + ] 1064 + 1065 + [[package]] 1066 + name = "openssl-macros" 1067 + version = "0.1.1" 1068 + source = "registry+https://github.com/rust-lang/crates.io-index" 1069 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1070 + dependencies = [ 1071 + "proc-macro2", 1072 + "quote", 1073 + "syn", 1074 + ] 1075 + 1076 + [[package]] 1077 + name = "openssl-probe" 1078 + version = "0.1.5" 1079 + source = "registry+https://github.com/rust-lang/crates.io-index" 1080 + checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1081 + 1082 + [[package]] 1083 + name = "openssl-sys" 1084 + version = "0.9.104" 1085 + source = "registry+https://github.com/rust-lang/crates.io-index" 1086 + checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" 1087 + dependencies = [ 1088 + "cc", 1089 + "libc", 1090 + "pkg-config", 1091 + "vcpkg", 1092 + ] 1093 + 1094 + [[package]] 1095 + name = "parking" 1096 + version = "2.2.1" 1097 + source = "registry+https://github.com/rust-lang/crates.io-index" 1098 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 1099 + 1100 + [[package]] 1101 + name = "parking_lot" 1102 + version = "0.12.3" 1103 + source = "registry+https://github.com/rust-lang/crates.io-index" 1104 + checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 1105 + dependencies = [ 1106 + "lock_api", 1107 + "parking_lot_core", 1108 + ] 1109 + 1110 + [[package]] 1111 + name = "parking_lot_core" 1112 + version = "0.9.10" 1113 + source = "registry+https://github.com/rust-lang/crates.io-index" 1114 + checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 1115 + dependencies = [ 1116 + "cfg-if", 1117 + "libc", 1118 + "redox_syscall", 1119 + "smallvec", 1120 + "windows-targets 0.52.6", 1121 + ] 1122 + 1123 + [[package]] 1124 + name = "percent-encoding" 1125 + version = "2.3.1" 1126 + source = "registry+https://github.com/rust-lang/crates.io-index" 1127 + checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1128 + 1129 + [[package]] 1130 + name = "pest" 1131 + version = "2.7.15" 1132 + source = "registry+https://github.com/rust-lang/crates.io-index" 1133 + checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" 1134 + dependencies = [ 1135 + "memchr", 1136 + "thiserror 2.0.9", 1137 + "ucd-trie", 1138 + ] 1139 + 1140 + [[package]] 1141 + name = "pest_derive" 1142 + version = "2.7.15" 1143 + source = "registry+https://github.com/rust-lang/crates.io-index" 1144 + checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" 1145 + dependencies = [ 1146 + "pest", 1147 + "pest_generator", 1148 + ] 1149 + 1150 + [[package]] 1151 + name = "pest_generator" 1152 + version = "2.7.15" 1153 + source = "registry+https://github.com/rust-lang/crates.io-index" 1154 + checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" 1155 + dependencies = [ 1156 + "pest", 1157 + "pest_meta", 1158 + "proc-macro2", 1159 + "quote", 1160 + "syn", 1161 + ] 1162 + 1163 + [[package]] 1164 + name = "pest_meta" 1165 + version = "2.7.15" 1166 + source = "registry+https://github.com/rust-lang/crates.io-index" 1167 + checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" 1168 + dependencies = [ 1169 + "once_cell", 1170 + "pest", 1171 + "sha2", 1172 + ] 1173 + 1174 + [[package]] 1175 + name = "pin-project-lite" 1176 + version = "0.2.15" 1177 + source = "registry+https://github.com/rust-lang/crates.io-index" 1178 + checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" 1179 + 1180 + [[package]] 1181 + name = "pin-utils" 1182 + version = "0.1.0" 1183 + source = "registry+https://github.com/rust-lang/crates.io-index" 1184 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1185 + 1186 + [[package]] 1187 + name = "piper" 1188 + version = "0.2.4" 1189 + source = "registry+https://github.com/rust-lang/crates.io-index" 1190 + checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" 1191 + dependencies = [ 1192 + "atomic-waker", 1193 + "fastrand", 1194 + "futures-io", 1195 + ] 1196 + 1197 + [[package]] 1198 + name = "pkg-config" 1199 + version = "0.3.31" 1200 + source = "registry+https://github.com/rust-lang/crates.io-index" 1201 + checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" 1202 + 1203 + [[package]] 1204 + name = "polling" 1205 + version = "3.7.4" 1206 + source = "registry+https://github.com/rust-lang/crates.io-index" 1207 + checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" 1208 + dependencies = [ 1209 + "cfg-if", 1210 + "concurrent-queue", 1211 + "hermit-abi", 1212 + "pin-project-lite", 1213 + "rustix", 1214 + "tracing", 1215 + "windows-sys 0.59.0", 1216 + ] 1217 + 1218 + [[package]] 1219 + name = "proc-macro2" 1220 + version = "1.0.92" 1221 + source = "registry+https://github.com/rust-lang/crates.io-index" 1222 + checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" 1223 + dependencies = [ 1224 + "unicode-ident", 1225 + ] 1226 + 1227 + [[package]] 1228 + name = "quote" 1229 + version = "1.0.38" 1230 + source = "registry+https://github.com/rust-lang/crates.io-index" 1231 + checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" 1232 + dependencies = [ 1233 + "proc-macro2", 1234 + ] 1235 + 1236 + [[package]] 1237 + name = "rayon" 1238 + version = "1.10.0" 1239 + source = "registry+https://github.com/rust-lang/crates.io-index" 1240 + checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 1241 + dependencies = [ 1242 + "either", 1243 + "rayon-core", 1244 + ] 1245 + 1246 + [[package]] 1247 + name = "rayon-core" 1248 + version = "1.12.1" 1249 + source = "registry+https://github.com/rust-lang/crates.io-index" 1250 + checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 1251 + dependencies = [ 1252 + "crossbeam-deque", 1253 + "crossbeam-utils", 1254 + ] 1255 + 1256 + [[package]] 1257 + name = "redox_syscall" 1258 + version = "0.5.8" 1259 + source = "registry+https://github.com/rust-lang/crates.io-index" 1260 + checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" 1261 + dependencies = [ 1262 + "bitflags 2.6.0", 1263 + ] 1264 + 1265 + [[package]] 1266 + name = "reqwest" 1267 + version = "0.12.9" 1268 + source = "registry+https://github.com/rust-lang/crates.io-index" 1269 + checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" 1270 + dependencies = [ 1271 + "base64", 1272 + "bytes", 1273 + "encoding_rs", 1274 + "futures-core", 1275 + "futures-util", 1276 + "h2", 1277 + "http", 1278 + "http-body", 1279 + "http-body-util", 1280 + "hyper", 1281 + "hyper-rustls", 1282 + "hyper-tls", 1283 + "hyper-util", 1284 + "ipnet", 1285 + "js-sys", 1286 + "log", 1287 + "mime", 1288 + "native-tls", 1289 + "once_cell", 1290 + "percent-encoding", 1291 + "pin-project-lite", 1292 + "rustls-pemfile", 1293 + "serde", 1294 + "serde_json", 1295 + "serde_urlencoded", 1296 + "sync_wrapper", 1297 + "system-configuration", 1298 + "tokio", 1299 + "tokio-native-tls", 1300 + "tower-service", 1301 + "url", 1302 + "wasm-bindgen", 1303 + "wasm-bindgen-futures", 1304 + "web-sys", 1305 + "windows-registry", 1306 + ] 1307 + 1308 + [[package]] 1309 + name = "ring" 1310 + version = "0.17.8" 1311 + source = "registry+https://github.com/rust-lang/crates.io-index" 1312 + checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 1313 + dependencies = [ 1314 + "cc", 1315 + "cfg-if", 1316 + "getrandom", 1317 + "libc", 1318 + "spin", 1319 + "untrusted", 1320 + "windows-sys 0.52.0", 1321 + ] 1322 + 1323 + [[package]] 1324 + name = "rustc-demangle" 1325 + version = "0.1.24" 1326 + source = "registry+https://github.com/rust-lang/crates.io-index" 1327 + checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 1328 + 1329 + [[package]] 1330 + name = "rustix" 1331 + version = "0.38.42" 1332 + source = "registry+https://github.com/rust-lang/crates.io-index" 1333 + checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" 1334 + dependencies = [ 1335 + "bitflags 2.6.0", 1336 + "errno", 1337 + "libc", 1338 + "linux-raw-sys", 1339 + "windows-sys 0.59.0", 1340 + ] 1341 + 1342 + [[package]] 1343 + name = "rustls" 1344 + version = "0.23.20" 1345 + source = "registry+https://github.com/rust-lang/crates.io-index" 1346 + checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" 1347 + dependencies = [ 1348 + "once_cell", 1349 + "rustls-pki-types", 1350 + "rustls-webpki", 1351 + "subtle", 1352 + "zeroize", 1353 + ] 1354 + 1355 + [[package]] 1356 + name = "rustls-pemfile" 1357 + version = "2.2.0" 1358 + source = "registry+https://github.com/rust-lang/crates.io-index" 1359 + checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" 1360 + dependencies = [ 1361 + "rustls-pki-types", 1362 + ] 1363 + 1364 + [[package]] 1365 + name = "rustls-pki-types" 1366 + version = "1.10.1" 1367 + source = "registry+https://github.com/rust-lang/crates.io-index" 1368 + checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" 1369 + 1370 + [[package]] 1371 + name = "rustls-webpki" 1372 + version = "0.102.8" 1373 + source = "registry+https://github.com/rust-lang/crates.io-index" 1374 + checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" 1375 + dependencies = [ 1376 + "ring", 1377 + "rustls-pki-types", 1378 + "untrusted", 1379 + ] 1380 + 1381 + [[package]] 1382 + name = "ryu" 1383 + version = "1.0.18" 1384 + source = "registry+https://github.com/rust-lang/crates.io-index" 1385 + checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 1386 + 1387 + [[package]] 1388 + name = "schannel" 1389 + version = "0.1.27" 1390 + source = "registry+https://github.com/rust-lang/crates.io-index" 1391 + checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" 1392 + dependencies = [ 1393 + "windows-sys 0.59.0", 1394 + ] 1395 + 1396 + [[package]] 1397 + name = "scopeguard" 1398 + version = "1.2.0" 1399 + source = "registry+https://github.com/rust-lang/crates.io-index" 1400 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1401 + 1402 + [[package]] 1403 + name = "security-framework" 1404 + version = "2.11.1" 1405 + source = "registry+https://github.com/rust-lang/crates.io-index" 1406 + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 1407 + dependencies = [ 1408 + "bitflags 2.6.0", 1409 + "core-foundation", 1410 + "core-foundation-sys", 1411 + "libc", 1412 + "security-framework-sys", 1413 + ] 1414 + 1415 + [[package]] 1416 + name = "security-framework-sys" 1417 + version = "2.13.0" 1418 + source = "registry+https://github.com/rust-lang/crates.io-index" 1419 + checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" 1420 + dependencies = [ 1421 + "core-foundation-sys", 1422 + "libc", 1423 + ] 1424 + 1425 + [[package]] 1426 + name = "serde" 1427 + version = "1.0.216" 1428 + source = "registry+https://github.com/rust-lang/crates.io-index" 1429 + checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" 1430 + dependencies = [ 1431 + "serde_derive", 1432 + ] 1433 + 1434 + [[package]] 1435 + name = "serde_derive" 1436 + version = "1.0.216" 1437 + source = "registry+https://github.com/rust-lang/crates.io-index" 1438 + checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" 1439 + dependencies = [ 1440 + "proc-macro2", 1441 + "quote", 1442 + "syn", 1443 + ] 1444 + 1445 + [[package]] 1446 + name = "serde_json" 1447 + version = "1.0.134" 1448 + source = "registry+https://github.com/rust-lang/crates.io-index" 1449 + checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" 1450 + dependencies = [ 1451 + "itoa", 1452 + "memchr", 1453 + "ryu", 1454 + "serde", 1455 + ] 1456 + 1457 + [[package]] 1458 + name = "serde_urlencoded" 1459 + version = "0.7.1" 1460 + source = "registry+https://github.com/rust-lang/crates.io-index" 1461 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1462 + dependencies = [ 1463 + "form_urlencoded", 1464 + "itoa", 1465 + "ryu", 1466 + "serde", 1467 + ] 1468 + 1469 + [[package]] 1470 + name = "sha2" 1471 + version = "0.10.8" 1472 + source = "registry+https://github.com/rust-lang/crates.io-index" 1473 + checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 1474 + dependencies = [ 1475 + "cfg-if", 1476 + "cpufeatures", 1477 + "digest", 1478 + ] 1479 + 1480 + [[package]] 1481 + name = "shlex" 1482 + version = "1.3.0" 1483 + source = "registry+https://github.com/rust-lang/crates.io-index" 1484 + checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1485 + 1486 + [[package]] 1487 + name = "signal-hook" 1488 + version = "0.3.17" 1489 + source = "registry+https://github.com/rust-lang/crates.io-index" 1490 + checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" 1491 + dependencies = [ 1492 + "libc", 1493 + "signal-hook-registry", 1494 + ] 1495 + 1496 + [[package]] 1497 + name = "signal-hook-mio" 1498 + version = "0.2.4" 1499 + source = "registry+https://github.com/rust-lang/crates.io-index" 1500 + checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" 1501 + dependencies = [ 1502 + "libc", 1503 + "mio 0.8.11", 1504 + "signal-hook", 1505 + ] 1506 + 1507 + [[package]] 1508 + name = "signal-hook-registry" 1509 + version = "1.4.2" 1510 + source = "registry+https://github.com/rust-lang/crates.io-index" 1511 + checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 1512 + dependencies = [ 1513 + "libc", 1514 + ] 1515 + 1516 + [[package]] 1517 + name = "slab" 1518 + version = "0.4.9" 1519 + source = "registry+https://github.com/rust-lang/crates.io-index" 1520 + checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1521 + dependencies = [ 1522 + "autocfg", 1523 + ] 1524 + 1525 + [[package]] 1526 + name = "smallvec" 1527 + version = "1.13.2" 1528 + source = "registry+https://github.com/rust-lang/crates.io-index" 1529 + checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 1530 + 1531 + [[package]] 1532 + name = "socket2" 1533 + version = "0.5.8" 1534 + source = "registry+https://github.com/rust-lang/crates.io-index" 1535 + checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" 1536 + dependencies = [ 1537 + "libc", 1538 + "windows-sys 0.52.0", 1539 + ] 1540 + 1541 + [[package]] 1542 + name = "spin" 1543 + version = "0.9.8" 1544 + source = "registry+https://github.com/rust-lang/crates.io-index" 1545 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1546 + 1547 + [[package]] 1548 + name = "stable_deref_trait" 1549 + version = "1.2.0" 1550 + source = "registry+https://github.com/rust-lang/crates.io-index" 1551 + checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1552 + 1553 + [[package]] 1554 + name = "steamlocate" 1555 + version = "2.0.0" 1556 + source = "registry+https://github.com/rust-lang/crates.io-index" 1557 + checksum = "cb96708f2e7cadc6c5bde3f3e12e3d6565bbd4d8b9e3da057035881c33136d9d" 1558 + dependencies = [ 1559 + "crc", 1560 + "home", 1561 + "keyvalues-parser", 1562 + "keyvalues-serde", 1563 + "serde", 1564 + "winreg", 1565 + ] 1566 + 1567 + [[package]] 1568 + name = "subtle" 1569 + version = "2.6.1" 1570 + source = "registry+https://github.com/rust-lang/crates.io-index" 1571 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1572 + 1573 + [[package]] 1574 + name = "sudo" 1575 + version = "0.6.0" 1576 + source = "registry+https://github.com/rust-lang/crates.io-index" 1577 + checksum = "88bd84d4c082e18e37fef52c0088e4407dabcef19d23a607fb4b5ee03b7d5b83" 1578 + dependencies = [ 1579 + "libc", 1580 + "log", 1581 + ] 1582 + 1583 + [[package]] 1584 + name = "syn" 1585 + version = "2.0.91" 1586 + source = "registry+https://github.com/rust-lang/crates.io-index" 1587 + checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" 1588 + dependencies = [ 1589 + "proc-macro2", 1590 + "quote", 1591 + "unicode-ident", 1592 + ] 1593 + 1594 + [[package]] 1595 + name = "sync_wrapper" 1596 + version = "1.0.2" 1597 + source = "registry+https://github.com/rust-lang/crates.io-index" 1598 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1599 + dependencies = [ 1600 + "futures-core", 1601 + ] 1602 + 1603 + [[package]] 1604 + name = "synstructure" 1605 + version = "0.13.1" 1606 + source = "registry+https://github.com/rust-lang/crates.io-index" 1607 + checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 1608 + dependencies = [ 1609 + "proc-macro2", 1610 + "quote", 1611 + "syn", 1612 + ] 1613 + 1614 + [[package]] 1615 + name = "sysinfo" 1616 + version = "0.33.0" 1617 + source = "registry+https://github.com/rust-lang/crates.io-index" 1618 + checksum = "948512566b1895f93b1592c7574baeb2de842f224f2aab158799ecadb8ebbb46" 1619 + dependencies = [ 1620 + "core-foundation-sys", 1621 + "libc", 1622 + "memchr", 1623 + "ntapi", 1624 + "rayon", 1625 + "windows", 1626 + ] 1627 + 1628 + [[package]] 1629 + name = "system-configuration" 1630 + version = "0.6.1" 1631 + source = "registry+https://github.com/rust-lang/crates.io-index" 1632 + checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 1633 + dependencies = [ 1634 + "bitflags 2.6.0", 1635 + "core-foundation", 1636 + "system-configuration-sys", 1637 + ] 1638 + 1639 + [[package]] 1640 + name = "system-configuration-sys" 1641 + version = "0.6.0" 1642 + source = "registry+https://github.com/rust-lang/crates.io-index" 1643 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 1644 + dependencies = [ 1645 + "core-foundation-sys", 1646 + "libc", 1647 + ] 1648 + 1649 + [[package]] 1650 + name = "tempfile" 1651 + version = "3.14.0" 1652 + source = "registry+https://github.com/rust-lang/crates.io-index" 1653 + checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" 1654 + dependencies = [ 1655 + "cfg-if", 1656 + "fastrand", 1657 + "once_cell", 1658 + "rustix", 1659 + "windows-sys 0.59.0", 1660 + ] 1661 + 1662 + [[package]] 1663 + name = "thiserror" 1664 + version = "1.0.69" 1665 + source = "registry+https://github.com/rust-lang/crates.io-index" 1666 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 1667 + dependencies = [ 1668 + "thiserror-impl 1.0.69", 1669 + ] 1670 + 1671 + [[package]] 1672 + name = "thiserror" 1673 + version = "2.0.9" 1674 + source = "registry+https://github.com/rust-lang/crates.io-index" 1675 + checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" 1676 + dependencies = [ 1677 + "thiserror-impl 2.0.9", 1678 + ] 1679 + 1680 + [[package]] 1681 + name = "thiserror-impl" 1682 + version = "1.0.69" 1683 + source = "registry+https://github.com/rust-lang/crates.io-index" 1684 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 1685 + dependencies = [ 1686 + "proc-macro2", 1687 + "quote", 1688 + "syn", 1689 + ] 1690 + 1691 + [[package]] 1692 + name = "thiserror-impl" 1693 + version = "2.0.9" 1694 + source = "registry+https://github.com/rust-lang/crates.io-index" 1695 + checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" 1696 + dependencies = [ 1697 + "proc-macro2", 1698 + "quote", 1699 + "syn", 1700 + ] 1701 + 1702 + [[package]] 1703 + name = "tinystr" 1704 + version = "0.7.6" 1705 + source = "registry+https://github.com/rust-lang/crates.io-index" 1706 + checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 1707 + dependencies = [ 1708 + "displaydoc", 1709 + "zerovec", 1710 + ] 1711 + 1712 + [[package]] 1713 + name = "tokio" 1714 + version = "1.42.0" 1715 + source = "registry+https://github.com/rust-lang/crates.io-index" 1716 + checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" 1717 + dependencies = [ 1718 + "backtrace", 1719 + "bytes", 1720 + "libc", 1721 + "mio 1.0.3", 1722 + "pin-project-lite", 1723 + "socket2", 1724 + "tokio-macros", 1725 + "windows-sys 0.52.0", 1726 + ] 1727 + 1728 + [[package]] 1729 + name = "tokio-macros" 1730 + version = "2.4.0" 1731 + source = "registry+https://github.com/rust-lang/crates.io-index" 1732 + checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" 1733 + dependencies = [ 1734 + "proc-macro2", 1735 + "quote", 1736 + "syn", 1737 + ] 1738 + 1739 + [[package]] 1740 + name = "tokio-native-tls" 1741 + version = "0.3.1" 1742 + source = "registry+https://github.com/rust-lang/crates.io-index" 1743 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 1744 + dependencies = [ 1745 + "native-tls", 1746 + "tokio", 1747 + ] 1748 + 1749 + [[package]] 1750 + name = "tokio-rustls" 1751 + version = "0.26.1" 1752 + source = "registry+https://github.com/rust-lang/crates.io-index" 1753 + checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" 1754 + dependencies = [ 1755 + "rustls", 1756 + "tokio", 1757 + ] 1758 + 1759 + [[package]] 1760 + name = "tokio-util" 1761 + version = "0.7.13" 1762 + source = "registry+https://github.com/rust-lang/crates.io-index" 1763 + checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" 1764 + dependencies = [ 1765 + "bytes", 1766 + "futures-core", 1767 + "futures-sink", 1768 + "pin-project-lite", 1769 + "tokio", 1770 + ] 1771 + 1772 + [[package]] 1773 + name = "tower-service" 1774 + version = "0.3.3" 1775 + source = "registry+https://github.com/rust-lang/crates.io-index" 1776 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 1777 + 1778 + [[package]] 1779 + name = "tracing" 1780 + version = "0.1.41" 1781 + source = "registry+https://github.com/rust-lang/crates.io-index" 1782 + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 1783 + dependencies = [ 1784 + "pin-project-lite", 1785 + "tracing-core", 1786 + ] 1787 + 1788 + [[package]] 1789 + name = "tracing-core" 1790 + version = "0.1.33" 1791 + source = "registry+https://github.com/rust-lang/crates.io-index" 1792 + checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" 1793 + dependencies = [ 1794 + "once_cell", 1795 + ] 1796 + 1797 + [[package]] 1798 + name = "try-lock" 1799 + version = "0.2.5" 1800 + source = "registry+https://github.com/rust-lang/crates.io-index" 1801 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1802 + 1803 + [[package]] 1804 + name = "typenum" 1805 + version = "1.17.0" 1806 + source = "registry+https://github.com/rust-lang/crates.io-index" 1807 + checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 1808 + 1809 + [[package]] 1810 + name = "ucd-trie" 1811 + version = "0.1.7" 1812 + source = "registry+https://github.com/rust-lang/crates.io-index" 1813 + checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" 1814 + 1815 + [[package]] 1816 + name = "unicode-ident" 1817 + version = "1.0.14" 1818 + source = "registry+https://github.com/rust-lang/crates.io-index" 1819 + checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" 1820 + 1821 + [[package]] 1822 + name = "untrusted" 1823 + version = "0.9.0" 1824 + source = "registry+https://github.com/rust-lang/crates.io-index" 1825 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1826 + 1827 + [[package]] 1828 + name = "url" 1829 + version = "2.5.4" 1830 + source = "registry+https://github.com/rust-lang/crates.io-index" 1831 + checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" 1832 + dependencies = [ 1833 + "form_urlencoded", 1834 + "idna", 1835 + "percent-encoding", 1836 + ] 1837 + 1838 + [[package]] 1839 + name = "utf16_iter" 1840 + version = "1.0.5" 1841 + source = "registry+https://github.com/rust-lang/crates.io-index" 1842 + checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 1843 + 1844 + [[package]] 1845 + name = "utf8_iter" 1846 + version = "1.0.4" 1847 + source = "registry+https://github.com/rust-lang/crates.io-index" 1848 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1849 + 1850 + [[package]] 1851 + name = "value-bag" 1852 + version = "1.10.0" 1853 + source = "registry+https://github.com/rust-lang/crates.io-index" 1854 + checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" 1855 + 1856 + [[package]] 1857 + name = "vcpkg" 1858 + version = "0.2.15" 1859 + source = "registry+https://github.com/rust-lang/crates.io-index" 1860 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1861 + 1862 + [[package]] 1863 + name = "version_check" 1864 + version = "0.9.5" 1865 + source = "registry+https://github.com/rust-lang/crates.io-index" 1866 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 1867 + 1868 + [[package]] 1869 + name = "want" 1870 + version = "0.3.1" 1871 + source = "registry+https://github.com/rust-lang/crates.io-index" 1872 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1873 + dependencies = [ 1874 + "try-lock", 1875 + ] 1876 + 1877 + [[package]] 1878 + name = "wasi" 1879 + version = "0.11.0+wasi-snapshot-preview1" 1880 + source = "registry+https://github.com/rust-lang/crates.io-index" 1881 + checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1882 + 1883 + [[package]] 1884 + name = "wasm-bindgen" 1885 + version = "0.2.99" 1886 + source = "registry+https://github.com/rust-lang/crates.io-index" 1887 + checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" 1888 + dependencies = [ 1889 + "cfg-if", 1890 + "once_cell", 1891 + "wasm-bindgen-macro", 1892 + ] 1893 + 1894 + [[package]] 1895 + name = "wasm-bindgen-backend" 1896 + version = "0.2.99" 1897 + source = "registry+https://github.com/rust-lang/crates.io-index" 1898 + checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" 1899 + dependencies = [ 1900 + "bumpalo", 1901 + "log", 1902 + "proc-macro2", 1903 + "quote", 1904 + "syn", 1905 + "wasm-bindgen-shared", 1906 + ] 1907 + 1908 + [[package]] 1909 + name = "wasm-bindgen-futures" 1910 + version = "0.4.49" 1911 + source = "registry+https://github.com/rust-lang/crates.io-index" 1912 + checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" 1913 + dependencies = [ 1914 + "cfg-if", 1915 + "js-sys", 1916 + "once_cell", 1917 + "wasm-bindgen", 1918 + "web-sys", 1919 + ] 1920 + 1921 + [[package]] 1922 + name = "wasm-bindgen-macro" 1923 + version = "0.2.99" 1924 + source = "registry+https://github.com/rust-lang/crates.io-index" 1925 + checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" 1926 + dependencies = [ 1927 + "quote", 1928 + "wasm-bindgen-macro-support", 1929 + ] 1930 + 1931 + [[package]] 1932 + name = "wasm-bindgen-macro-support" 1933 + version = "0.2.99" 1934 + source = "registry+https://github.com/rust-lang/crates.io-index" 1935 + checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" 1936 + dependencies = [ 1937 + "proc-macro2", 1938 + "quote", 1939 + "syn", 1940 + "wasm-bindgen-backend", 1941 + "wasm-bindgen-shared", 1942 + ] 1943 + 1944 + [[package]] 1945 + name = "wasm-bindgen-shared" 1946 + version = "0.2.99" 1947 + source = "registry+https://github.com/rust-lang/crates.io-index" 1948 + checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" 1949 + 1950 + [[package]] 1951 + name = "web-sys" 1952 + version = "0.3.76" 1953 + source = "registry+https://github.com/rust-lang/crates.io-index" 1954 + checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" 1955 + dependencies = [ 1956 + "js-sys", 1957 + "wasm-bindgen", 1958 + ] 1959 + 1960 + [[package]] 1961 + name = "webfishing_macos_installer" 1962 + version = "0.1.0" 1963 + dependencies = [ 1964 + "asky", 1965 + "async-std", 1966 + "reqwest", 1967 + "steamlocate", 1968 + "sudo", 1969 + "sysinfo", 1970 + "tokio", 1971 + ] 1972 + 1973 + [[package]] 1974 + name = "winapi" 1975 + version = "0.3.9" 1976 + source = "registry+https://github.com/rust-lang/crates.io-index" 1977 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1978 + dependencies = [ 1979 + "winapi-i686-pc-windows-gnu", 1980 + "winapi-x86_64-pc-windows-gnu", 1981 + ] 1982 + 1983 + [[package]] 1984 + name = "winapi-i686-pc-windows-gnu" 1985 + version = "0.4.0" 1986 + source = "registry+https://github.com/rust-lang/crates.io-index" 1987 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1988 + 1989 + [[package]] 1990 + name = "winapi-x86_64-pc-windows-gnu" 1991 + version = "0.4.0" 1992 + source = "registry+https://github.com/rust-lang/crates.io-index" 1993 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1994 + 1995 + [[package]] 1996 + name = "windows" 1997 + version = "0.57.0" 1998 + source = "registry+https://github.com/rust-lang/crates.io-index" 1999 + checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" 2000 + dependencies = [ 2001 + "windows-core", 2002 + "windows-targets 0.52.6", 2003 + ] 2004 + 2005 + [[package]] 2006 + name = "windows-core" 2007 + version = "0.57.0" 2008 + source = "registry+https://github.com/rust-lang/crates.io-index" 2009 + checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" 2010 + dependencies = [ 2011 + "windows-implement", 2012 + "windows-interface", 2013 + "windows-result 0.1.2", 2014 + "windows-targets 0.52.6", 2015 + ] 2016 + 2017 + [[package]] 2018 + name = "windows-implement" 2019 + version = "0.57.0" 2020 + source = "registry+https://github.com/rust-lang/crates.io-index" 2021 + checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" 2022 + dependencies = [ 2023 + "proc-macro2", 2024 + "quote", 2025 + "syn", 2026 + ] 2027 + 2028 + [[package]] 2029 + name = "windows-interface" 2030 + version = "0.57.0" 2031 + source = "registry+https://github.com/rust-lang/crates.io-index" 2032 + checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" 2033 + dependencies = [ 2034 + "proc-macro2", 2035 + "quote", 2036 + "syn", 2037 + ] 2038 + 2039 + [[package]] 2040 + name = "windows-registry" 2041 + version = "0.2.0" 2042 + source = "registry+https://github.com/rust-lang/crates.io-index" 2043 + checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" 2044 + dependencies = [ 2045 + "windows-result 0.2.0", 2046 + "windows-strings", 2047 + "windows-targets 0.52.6", 2048 + ] 2049 + 2050 + [[package]] 2051 + name = "windows-result" 2052 + version = "0.1.2" 2053 + source = "registry+https://github.com/rust-lang/crates.io-index" 2054 + checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" 2055 + dependencies = [ 2056 + "windows-targets 0.52.6", 2057 + ] 2058 + 2059 + [[package]] 2060 + name = "windows-result" 2061 + version = "0.2.0" 2062 + source = "registry+https://github.com/rust-lang/crates.io-index" 2063 + checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 2064 + dependencies = [ 2065 + "windows-targets 0.52.6", 2066 + ] 2067 + 2068 + [[package]] 2069 + name = "windows-strings" 2070 + version = "0.1.0" 2071 + source = "registry+https://github.com/rust-lang/crates.io-index" 2072 + checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 2073 + dependencies = [ 2074 + "windows-result 0.2.0", 2075 + "windows-targets 0.52.6", 2076 + ] 2077 + 2078 + [[package]] 2079 + name = "windows-sys" 2080 + version = "0.48.0" 2081 + source = "registry+https://github.com/rust-lang/crates.io-index" 2082 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2083 + dependencies = [ 2084 + "windows-targets 0.48.5", 2085 + ] 2086 + 2087 + [[package]] 2088 + name = "windows-sys" 2089 + version = "0.52.0" 2090 + source = "registry+https://github.com/rust-lang/crates.io-index" 2091 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2092 + dependencies = [ 2093 + "windows-targets 0.52.6", 2094 + ] 2095 + 2096 + [[package]] 2097 + name = "windows-sys" 2098 + version = "0.59.0" 2099 + source = "registry+https://github.com/rust-lang/crates.io-index" 2100 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 2101 + dependencies = [ 2102 + "windows-targets 0.52.6", 2103 + ] 2104 + 2105 + [[package]] 2106 + name = "windows-targets" 2107 + version = "0.48.5" 2108 + source = "registry+https://github.com/rust-lang/crates.io-index" 2109 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2110 + dependencies = [ 2111 + "windows_aarch64_gnullvm 0.48.5", 2112 + "windows_aarch64_msvc 0.48.5", 2113 + "windows_i686_gnu 0.48.5", 2114 + "windows_i686_msvc 0.48.5", 2115 + "windows_x86_64_gnu 0.48.5", 2116 + "windows_x86_64_gnullvm 0.48.5", 2117 + "windows_x86_64_msvc 0.48.5", 2118 + ] 2119 + 2120 + [[package]] 2121 + name = "windows-targets" 2122 + version = "0.52.6" 2123 + source = "registry+https://github.com/rust-lang/crates.io-index" 2124 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 2125 + dependencies = [ 2126 + "windows_aarch64_gnullvm 0.52.6", 2127 + "windows_aarch64_msvc 0.52.6", 2128 + "windows_i686_gnu 0.52.6", 2129 + "windows_i686_gnullvm", 2130 + "windows_i686_msvc 0.52.6", 2131 + "windows_x86_64_gnu 0.52.6", 2132 + "windows_x86_64_gnullvm 0.52.6", 2133 + "windows_x86_64_msvc 0.52.6", 2134 + ] 2135 + 2136 + [[package]] 2137 + name = "windows_aarch64_gnullvm" 2138 + version = "0.48.5" 2139 + source = "registry+https://github.com/rust-lang/crates.io-index" 2140 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2141 + 2142 + [[package]] 2143 + name = "windows_aarch64_gnullvm" 2144 + version = "0.52.6" 2145 + source = "registry+https://github.com/rust-lang/crates.io-index" 2146 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 2147 + 2148 + [[package]] 2149 + name = "windows_aarch64_msvc" 2150 + version = "0.48.5" 2151 + source = "registry+https://github.com/rust-lang/crates.io-index" 2152 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2153 + 2154 + [[package]] 2155 + name = "windows_aarch64_msvc" 2156 + version = "0.52.6" 2157 + source = "registry+https://github.com/rust-lang/crates.io-index" 2158 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 2159 + 2160 + [[package]] 2161 + name = "windows_i686_gnu" 2162 + version = "0.48.5" 2163 + source = "registry+https://github.com/rust-lang/crates.io-index" 2164 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2165 + 2166 + [[package]] 2167 + name = "windows_i686_gnu" 2168 + version = "0.52.6" 2169 + source = "registry+https://github.com/rust-lang/crates.io-index" 2170 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 2171 + 2172 + [[package]] 2173 + name = "windows_i686_gnullvm" 2174 + version = "0.52.6" 2175 + source = "registry+https://github.com/rust-lang/crates.io-index" 2176 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 2177 + 2178 + [[package]] 2179 + name = "windows_i686_msvc" 2180 + version = "0.48.5" 2181 + source = "registry+https://github.com/rust-lang/crates.io-index" 2182 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2183 + 2184 + [[package]] 2185 + name = "windows_i686_msvc" 2186 + version = "0.52.6" 2187 + source = "registry+https://github.com/rust-lang/crates.io-index" 2188 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 2189 + 2190 + [[package]] 2191 + name = "windows_x86_64_gnu" 2192 + version = "0.48.5" 2193 + source = "registry+https://github.com/rust-lang/crates.io-index" 2194 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2195 + 2196 + [[package]] 2197 + name = "windows_x86_64_gnu" 2198 + version = "0.52.6" 2199 + source = "registry+https://github.com/rust-lang/crates.io-index" 2200 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 2201 + 2202 + [[package]] 2203 + name = "windows_x86_64_gnullvm" 2204 + version = "0.48.5" 2205 + source = "registry+https://github.com/rust-lang/crates.io-index" 2206 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 2207 + 2208 + [[package]] 2209 + name = "windows_x86_64_gnullvm" 2210 + version = "0.52.6" 2211 + source = "registry+https://github.com/rust-lang/crates.io-index" 2212 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 2213 + 2214 + [[package]] 2215 + name = "windows_x86_64_msvc" 2216 + version = "0.48.5" 2217 + source = "registry+https://github.com/rust-lang/crates.io-index" 2218 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 2219 + 2220 + [[package]] 2221 + name = "windows_x86_64_msvc" 2222 + version = "0.52.6" 2223 + source = "registry+https://github.com/rust-lang/crates.io-index" 2224 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 2225 + 2226 + [[package]] 2227 + name = "winreg" 2228 + version = "0.52.0" 2229 + source = "registry+https://github.com/rust-lang/crates.io-index" 2230 + checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" 2231 + dependencies = [ 2232 + "cfg-if", 2233 + "windows-sys 0.48.0", 2234 + ] 2235 + 2236 + [[package]] 2237 + name = "write16" 2238 + version = "1.0.0" 2239 + source = "registry+https://github.com/rust-lang/crates.io-index" 2240 + checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 2241 + 2242 + [[package]] 2243 + name = "writeable" 2244 + version = "0.5.5" 2245 + source = "registry+https://github.com/rust-lang/crates.io-index" 2246 + checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 2247 + 2248 + [[package]] 2249 + name = "yoke" 2250 + version = "0.7.5" 2251 + source = "registry+https://github.com/rust-lang/crates.io-index" 2252 + checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" 2253 + dependencies = [ 2254 + "serde", 2255 + "stable_deref_trait", 2256 + "yoke-derive", 2257 + "zerofrom", 2258 + ] 2259 + 2260 + [[package]] 2261 + name = "yoke-derive" 2262 + version = "0.7.5" 2263 + source = "registry+https://github.com/rust-lang/crates.io-index" 2264 + checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" 2265 + dependencies = [ 2266 + "proc-macro2", 2267 + "quote", 2268 + "syn", 2269 + "synstructure", 2270 + ] 2271 + 2272 + [[package]] 2273 + name = "zerofrom" 2274 + version = "0.1.5" 2275 + source = "registry+https://github.com/rust-lang/crates.io-index" 2276 + checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" 2277 + dependencies = [ 2278 + "zerofrom-derive", 2279 + ] 2280 + 2281 + [[package]] 2282 + name = "zerofrom-derive" 2283 + version = "0.1.5" 2284 + source = "registry+https://github.com/rust-lang/crates.io-index" 2285 + checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" 2286 + dependencies = [ 2287 + "proc-macro2", 2288 + "quote", 2289 + "syn", 2290 + "synstructure", 2291 + ] 2292 + 2293 + [[package]] 2294 + name = "zeroize" 2295 + version = "1.8.1" 2296 + source = "registry+https://github.com/rust-lang/crates.io-index" 2297 + checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 2298 + 2299 + [[package]] 2300 + name = "zerovec" 2301 + version = "0.10.4" 2302 + source = "registry+https://github.com/rust-lang/crates.io-index" 2303 + checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" 2304 + dependencies = [ 2305 + "yoke", 2306 + "zerofrom", 2307 + "zerovec-derive", 2308 + ] 2309 + 2310 + [[package]] 2311 + name = "zerovec-derive" 2312 + version = "0.10.3" 2313 + source = "registry+https://github.com/rust-lang/crates.io-index" 2314 + checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" 2315 + dependencies = [ 2316 + "proc-macro2", 2317 + "quote", 2318 + "syn", 2319 + ]
+13
Cargo.toml
···
··· 1 + [package] 2 + name = "webfishing_macos_installer" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + [dependencies] 7 + reqwest = { version = "0.12.9" } 8 + tokio = { version = "1.0.0", features = ["rt", "rt-multi-thread", "macros"] } 9 + steamlocate = "2.0.0" 10 + sysinfo = "0.33.0" 11 + async-std = "1.13.0" 12 + sudo = "0.6.0" 13 + asky = "0.1.1"
+62
res/Info.plist
···
··· 1 + <?xml version="1.0" encoding="UTF-8"?> 2 + <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 + <plist version="1.0"> 4 + <dict> 5 + <key>CFBundleDevelopmentRegion</key> 6 + <string>English</string> 7 + <key>CFBundleExecutable</key> 8 + <string>webfishing</string> 9 + <key>CFBundleName</key> 10 + <string>webfishing</string> 11 + <key>CFBundleDisplayName</key> 12 + <string>WEBFISHING</string> 13 + <key>CFBundleIconFile</key> 14 + <string>icon.icns</string> 15 + <key>CFBundleIdentifier</key> 16 + <string>info.webfishing.webfishing</string> 17 + <key>CFBundleInfoDictionaryVersion</key> 18 + <string>6.0</string> 19 + <key>CFBundlePackageType</key> 20 + <string>APPL</string> 21 + <key>CFBundleShortVersionString</key> 22 + <string>1.0</string> 23 + <key>CFBundleSignature</key> 24 + <string></string> 25 + <key>CFBundleVersion</key> 26 + <string>1.0</string> 27 + <key>DTPlatformBuild</key> 28 + <string>14C18</string> 29 + <key>DTPlatformName</key> 30 + <string>macosx</string> 31 + <key>DTPlatformVersion</key> 32 + <string>13.1</string> 33 + <key>DTSDKBuild</key> 34 + <string>22C55</string> 35 + <key>DTSDKName</key> 36 + <string>macosx13.1</string> 37 + <key>DTXcode</key> 38 + <string>1420</string> 39 + <key>DTXcodeBuild</key> 40 + <string>14C18</string> 41 + $usage_descriptions 42 + <key>NSHumanReadableCopyright</key> 43 + <string>meow</string> 44 + <key>CFBundleSupportedPlatforms</key> 45 + <array> 46 + <string>MacOSX</string> 47 + </array> 48 + <key>NSPrincipalClass</key> 49 + <string>NSApplication</string> 50 + <key>LSApplicationCategoryType</key> 51 + <string>public.app-category.games</string> 52 + <key>LSMinimumSystemVersion</key> 53 + <string>10.12</string> 54 + <key>LSMinimumSystemVersionByArchitecture</key> 55 + <dict> 56 + <key>x86_64</key> 57 + <string>10.12</string> 58 + </dict> 59 + <key>NSHighResolutionCapable</key> 60 + $highres 61 + </dict> 62 + </plist>
+1
res/steam_appid.txt
···
··· 1 + 3146520
+7
res/webfishing.acf
···
··· 1 + "AppState" 2 + { 3 + "AppID" "3146520" 4 + "Universe" "1" 5 + "installdir" "WEBFISHING" 6 + "StateFlags" "1026" 7 + }
+189
src/main.rs
···
··· 1 + use std::fs::File; 2 + use std::io::{Read, Write}; 3 + use std::path::Path; 4 + use std::process::Command; 5 + use std::time::Duration; 6 + use asky::Confirm; 7 + use async_std::fs::create_dir; 8 + use steamlocate::SteamDir; 9 + use sudo::RunningAs; 10 + use sysinfo::ProcessesToUpdate; 11 + 12 + static WEBFISHING_APPID: u32 = 3146520; 13 + 14 + 15 + // https://stackoverflow.com/a/54152901 16 + fn replace_slice<T>(buf: &mut [T], from: &[T], to: &[T]) 17 + where 18 + T: Clone + PartialEq, 19 + { 20 + for i in 0..=buf.len() - from.len() { 21 + if buf[i..].starts_with(from) { 22 + buf[i..(i + from.len())].clone_from_slice(to); 23 + } 24 + } 25 + } 26 + 27 + async fn install_webfishing(location: &SteamDir) { 28 + let steam_location = location.path(); 29 + let acf_path = steam_location.join("steamapps").join(format!("appmanifest_{}.acf", WEBFISHING_APPID)); 30 + 31 + println!("Creating Webfishing ACF"); 32 + File::create(acf_path).unwrap().write(include_str!("../res/webfishing.acf").as_bytes()).expect("could not write acf"); 33 + 34 + println!("Waiting for steam to close"); 35 + let mut system = sysinfo::System::new_all(); 36 + while system.processes_by_name("steam_osx".as_ref()).count() > 0 { 37 + println!("Steam is still running..."); 38 + async_std::task::sleep(Duration::from_secs(5)).await; 39 + system.refresh_processes(ProcessesToUpdate::All, true); 40 + } 41 + 42 + println!("Steam is now closed, please launch it back and wait for webfishing to install"); 43 + 44 + while location.find_app(WEBFISHING_APPID).is_err() { 45 + println!("Steam is not launched..."); 46 + async_std::task::sleep(Duration::from_secs(10)).await; 47 + } 48 + 49 + println!("Steam launched, downloading webfishing"); 50 + let download_path = steam_location.join("steamapps").join("downloading").join(format!("{}", WEBFISHING_APPID)); 51 + 52 + while Path::exists(download_path.as_path()) { 53 + println!("Downloading webfishing..."); 54 + async_std::task::sleep(Duration::from_secs(10)).await; 55 + } 56 + } 57 + 58 + async fn download_godot_steam_template() { 59 + println!("Downloading GodotSteam template..."); 60 + let res = reqwest::get("https://github.com/GodotSteam/GodotSteam/releases/download/v3.27/macos-g36-s160-gs327.zip").await.expect("Could not download godotsteam template"); 61 + let body = res.bytes().await.expect("Could not read body"); 62 + 63 + let mut file = File::create("build/godot_steam_template.zip").expect("Could not create godotsteam template"); 64 + file.write_all(&body).expect("Could not write godotsteam template"); 65 + } 66 + 67 + fn build_webfishing_macos(webfishing_path: &Path) { 68 + let template_path = Path::new("build/osx_template.app"); 69 + Command::new("rm") 70 + .current_dir(template_path) 71 + .arg("Contents/MacOS/godot_osx_debug.64") 72 + .output().expect("Could not remove delete godot_osx_debug.64"); 73 + 74 + Command::new("mv") 75 + .current_dir(template_path) 76 + .arg("Contents/MacOS/godot_osx_release.64") 77 + .arg("Contents/MacOS/webfishing") 78 + .output().expect("Could not rename godot_osc_release.64"); 79 + 80 + let mut steamappid = File::create(template_path.join("Contents").join("MacOS").join("steam_appid.txt")).expect("could not create steam_appid.txt file"); 81 + steamappid.write(include_str!("../res/steam_appid.txt").as_bytes()).expect("could not write steam_appid.txt"); 82 + 83 + Command::new("cp") 84 + .arg(webfishing_path.join("webfishing.exe")) 85 + .arg(template_path.join("Contents").join("Resources").join("webfishing.pck")) 86 + .output().expect("Could not copy webfishing.exe"); 87 + 88 + let mut info_plist = File::create(template_path.join("Contents").join("Info.plist")).expect("Could not open Info.plist"); 89 + info_plist.write_all(include_str!("../res/Info.plist").as_bytes()).expect("could not write Info.plist"); 90 + 91 + Command::new("mv") 92 + .arg(template_path) 93 + .arg(Path::new("build/webfishing.app")) 94 + .output().expect("Could not copy webfishing.app"); 95 + } 96 + 97 + fn patch_webfishing_pck() { 98 + println!("Patching webfishing PCK"); 99 + let webfishing_pck_path = Path::new("build").join("webfishing.app").join("Contents").join("Resources").join("webfishing.pck"); 100 + 101 + let mut webfishing_pck_read = File::open(&webfishing_pck_path).expect("Could not open webfishing.pck file"); 102 + let mut bytes = Vec::new(); 103 + webfishing_pck_read.read_to_end(&mut bytes).expect("Could not read webfishing.pck"); 104 + drop(webfishing_pck_read); 105 + 106 + // PATCH 107 + replace_slice(&mut bytes, "steam_id_remote".as_bytes(), "remote_steam_id".as_bytes()); 108 + 109 + let mut webfishing_pck_write = File::create(webfishing_pck_path).expect("Could not open webfishing.pck file"); 110 + webfishing_pck_write.write_all(bytes.as_slice()).expect("Could not write webfishing.pck"); 111 + } 112 + 113 + #[tokio::main] 114 + async fn main() { 115 + if !Path::exists("build".as_ref()) { 116 + println!("Creating build folder"); 117 + create_dir("build").await.expect("could not create build folder"); 118 + } 119 + 120 + let location = SteamDir::locate().expect("could not locate steam directory"); 121 + 122 + let webfishing = location.find_app(WEBFISHING_APPID); 123 + if webfishing.is_err() || webfishing.unwrap().is_none() { 124 + println!("Installing Webfishing"); 125 + install_webfishing(&location).await; 126 + } 127 + 128 + let (app, library) = location.find_app(WEBFISHING_APPID).unwrap().unwrap(); 129 + 130 + if !Path::exists("build/godot_steam_template.zip".as_ref()) { 131 + download_godot_steam_template().await; 132 + } 133 + 134 + if !Path::exists("build/macos.zip".as_ref()) { 135 + println!("Unzipping template"); 136 + Command::new("unzip") 137 + .arg("-o") 138 + .arg("godot_steam_template.zip") 139 + .current_dir("./build") 140 + .output().expect("Could not unzip godot_steam_template.zip"); 141 + } 142 + 143 + if !Path::exists("build/osx_template.app".as_ref()) && !Path::exists("build/webfishing.app".as_ref()) { 144 + println!("Unzipping template"); 145 + Command::new("unzip") 146 + .arg("-o") 147 + .arg("macos.zip") 148 + .current_dir("./build") 149 + .output() 150 + .expect("Could not unzip macos.zip"); 151 + } 152 + 153 + 154 + let binding = library.resolve_app_dir(&app); 155 + let webfishing_path = binding.as_path(); 156 + if !Path::exists(Path::new("build/webfishing.app")) { 157 + build_webfishing_macos(webfishing_path); 158 + } 159 + 160 + if sudo::check() != RunningAs::Root { 161 + patch_webfishing_pck(); 162 + println!("Root permissions needed to sign webfishing"); 163 + } 164 + 165 + sudo::escalate_if_needed().expect("Could not escalate to sign the app"); 166 + 167 + Command::new("xattr") 168 + .arg("-cr") 169 + .arg("build/webfishing.app") 170 + .output() 171 + .expect("Could not execute xattr"); 172 + 173 + if Confirm::new("Do you wanna install Webfishing in the app folder?").prompt().expect("Could not confirm to install the webfishing") { 174 + Command::new("rsync") 175 + .arg("-a") 176 + .arg("build/webfishing.app") 177 + .current_dir("/Applications/") 178 + .output().expect("Could not execute rsync"); 179 + 180 + Command::new("rm") 181 + .arg("-r") 182 + .arg("build/webfishing.app") 183 + .output().expect("Could not remove webfishing.app"); 184 + 185 + println!("Successfully installed webfishing !"); 186 + } else { 187 + println!("Webfishing is in the build folder !") 188 + } 189 + }