Listen to git commits for a specific repo and run a shell command

Resolve did from handle with dns

vielle.dev edfe55f5 5f3e0f3f

verified
Changed files
+1054
src
+1006
Cargo.lock
··· 3 3 version = 4 4 4 5 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.1" 17 + source = "registry+https://github.com/rust-lang/crates.io-index" 18 + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 19 + 20 + [[package]] 21 + name = "async-trait" 22 + version = "0.1.89" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 25 + dependencies = [ 26 + "proc-macro2", 27 + "quote", 28 + "syn 2.0.106", 29 + ] 30 + 31 + [[package]] 32 + name = "autocfg" 33 + version = "1.5.0" 34 + source = "registry+https://github.com/rust-lang/crates.io-index" 35 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 36 + 37 + [[package]] 38 + name = "backtrace" 39 + version = "0.3.75" 40 + source = "registry+https://github.com/rust-lang/crates.io-index" 41 + checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" 42 + dependencies = [ 43 + "addr2line", 44 + "cfg-if", 45 + "libc", 46 + "miniz_oxide", 47 + "object", 48 + "rustc-demangle", 49 + "windows-targets", 50 + ] 51 + 52 + [[package]] 53 + name = "bitflags" 54 + version = "1.3.2" 55 + source = "registry+https://github.com/rust-lang/crates.io-index" 56 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 57 + 58 + [[package]] 59 + name = "bitflags" 60 + version = "2.9.4" 61 + source = "registry+https://github.com/rust-lang/crates.io-index" 62 + checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" 63 + 64 + [[package]] 65 + name = "cfg-if" 66 + version = "1.0.3" 67 + source = "registry+https://github.com/rust-lang/crates.io-index" 68 + checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" 69 + 70 + [[package]] 71 + name = "data-encoding" 72 + version = "2.9.0" 73 + source = "registry+https://github.com/rust-lang/crates.io-index" 74 + checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 75 + 76 + [[package]] 77 + name = "displaydoc" 78 + version = "0.2.5" 79 + source = "registry+https://github.com/rust-lang/crates.io-index" 80 + checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 81 + dependencies = [ 82 + "proc-macro2", 83 + "quote", 84 + "syn 2.0.106", 85 + ] 86 + 87 + [[package]] 88 + name = "enum-as-inner" 89 + version = "0.3.4" 90 + source = "registry+https://github.com/rust-lang/crates.io-index" 91 + checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" 92 + dependencies = [ 93 + "heck", 94 + "proc-macro2", 95 + "quote", 96 + "syn 1.0.109", 97 + ] 98 + 99 + [[package]] 100 + name = "form_urlencoded" 101 + version = "1.2.2" 102 + source = "registry+https://github.com/rust-lang/crates.io-index" 103 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 104 + dependencies = [ 105 + "percent-encoding", 106 + ] 107 + 108 + [[package]] 109 + name = "futures-channel" 110 + version = "0.3.31" 111 + source = "registry+https://github.com/rust-lang/crates.io-index" 112 + checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 113 + dependencies = [ 114 + "futures-core", 115 + ] 116 + 117 + [[package]] 118 + name = "futures-core" 119 + version = "0.3.31" 120 + source = "registry+https://github.com/rust-lang/crates.io-index" 121 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 122 + 123 + [[package]] 124 + name = "futures-io" 125 + version = "0.3.31" 126 + source = "registry+https://github.com/rust-lang/crates.io-index" 127 + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 128 + 129 + [[package]] 130 + name = "futures-task" 131 + version = "0.3.31" 132 + source = "registry+https://github.com/rust-lang/crates.io-index" 133 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 134 + 135 + [[package]] 136 + name = "futures-util" 137 + version = "0.3.31" 138 + source = "registry+https://github.com/rust-lang/crates.io-index" 139 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 140 + dependencies = [ 141 + "futures-core", 142 + "futures-task", 143 + "pin-project-lite", 144 + "pin-utils", 145 + "slab", 146 + ] 147 + 148 + [[package]] 149 + name = "getrandom" 150 + version = "0.2.16" 151 + source = "registry+https://github.com/rust-lang/crates.io-index" 152 + checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 153 + dependencies = [ 154 + "cfg-if", 155 + "libc", 156 + "wasi", 157 + ] 158 + 159 + [[package]] 160 + name = "gimli" 161 + version = "0.31.1" 162 + source = "registry+https://github.com/rust-lang/crates.io-index" 163 + checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 164 + 165 + [[package]] 166 + name = "heck" 167 + version = "0.4.1" 168 + source = "registry+https://github.com/rust-lang/crates.io-index" 169 + checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 170 + 171 + [[package]] 172 + name = "icu_collections" 173 + version = "2.0.0" 174 + source = "registry+https://github.com/rust-lang/crates.io-index" 175 + checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 176 + dependencies = [ 177 + "displaydoc", 178 + "potential_utf", 179 + "yoke", 180 + "zerofrom", 181 + "zerovec", 182 + ] 183 + 184 + [[package]] 185 + name = "icu_locale_core" 186 + version = "2.0.0" 187 + source = "registry+https://github.com/rust-lang/crates.io-index" 188 + checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 189 + dependencies = [ 190 + "displaydoc", 191 + "litemap", 192 + "tinystr", 193 + "writeable", 194 + "zerovec", 195 + ] 196 + 197 + [[package]] 198 + name = "icu_normalizer" 199 + version = "2.0.0" 200 + source = "registry+https://github.com/rust-lang/crates.io-index" 201 + checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 202 + dependencies = [ 203 + "displaydoc", 204 + "icu_collections", 205 + "icu_normalizer_data", 206 + "icu_properties", 207 + "icu_provider", 208 + "smallvec", 209 + "zerovec", 210 + ] 211 + 212 + [[package]] 213 + name = "icu_normalizer_data" 214 + version = "2.0.0" 215 + source = "registry+https://github.com/rust-lang/crates.io-index" 216 + checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 217 + 218 + [[package]] 219 + name = "icu_properties" 220 + version = "2.0.1" 221 + source = "registry+https://github.com/rust-lang/crates.io-index" 222 + checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 223 + dependencies = [ 224 + "displaydoc", 225 + "icu_collections", 226 + "icu_locale_core", 227 + "icu_properties_data", 228 + "icu_provider", 229 + "potential_utf", 230 + "zerotrie", 231 + "zerovec", 232 + ] 233 + 234 + [[package]] 235 + name = "icu_properties_data" 236 + version = "2.0.1" 237 + source = "registry+https://github.com/rust-lang/crates.io-index" 238 + checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 239 + 240 + [[package]] 241 + name = "icu_provider" 242 + version = "2.0.0" 243 + source = "registry+https://github.com/rust-lang/crates.io-index" 244 + checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 245 + dependencies = [ 246 + "displaydoc", 247 + "icu_locale_core", 248 + "stable_deref_trait", 249 + "tinystr", 250 + "writeable", 251 + "yoke", 252 + "zerofrom", 253 + "zerotrie", 254 + "zerovec", 255 + ] 256 + 257 + [[package]] 258 + name = "idna" 259 + version = "0.2.3" 260 + source = "registry+https://github.com/rust-lang/crates.io-index" 261 + checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" 262 + dependencies = [ 263 + "matches", 264 + "unicode-bidi", 265 + "unicode-normalization", 266 + ] 267 + 268 + [[package]] 269 + name = "idna" 270 + version = "1.1.0" 271 + source = "registry+https://github.com/rust-lang/crates.io-index" 272 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 273 + dependencies = [ 274 + "idna_adapter", 275 + "smallvec", 276 + "utf8_iter", 277 + ] 278 + 279 + [[package]] 280 + name = "idna_adapter" 281 + version = "1.2.1" 282 + source = "registry+https://github.com/rust-lang/crates.io-index" 283 + checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 284 + dependencies = [ 285 + "icu_normalizer", 286 + "icu_properties", 287 + ] 288 + 289 + [[package]] 290 + name = "instant" 291 + version = "0.1.13" 292 + source = "registry+https://github.com/rust-lang/crates.io-index" 293 + checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 294 + dependencies = [ 295 + "cfg-if", 296 + ] 297 + 298 + [[package]] 299 + name = "io-uring" 300 + version = "0.7.10" 301 + source = "registry+https://github.com/rust-lang/crates.io-index" 302 + checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" 303 + dependencies = [ 304 + "bitflags 2.9.4", 305 + "cfg-if", 306 + "libc", 307 + ] 308 + 309 + [[package]] 310 + name = "ipconfig" 311 + version = "0.2.2" 312 + source = "registry+https://github.com/rust-lang/crates.io-index" 313 + checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" 314 + dependencies = [ 315 + "socket2 0.3.19", 316 + "widestring", 317 + "winapi", 318 + "winreg", 319 + ] 320 + 321 + [[package]] 322 + name = "ipnet" 323 + version = "2.11.0" 324 + source = "registry+https://github.com/rust-lang/crates.io-index" 325 + checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 326 + 327 + [[package]] 6 328 name = "json" 7 329 version = "0.12.4" 8 330 source = "registry+https://github.com/rust-lang/crates.io-index" 9 331 checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" 10 332 11 333 [[package]] 334 + name = "lazy_static" 335 + version = "1.5.0" 336 + source = "registry+https://github.com/rust-lang/crates.io-index" 337 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 338 + 339 + [[package]] 340 + name = "libc" 341 + version = "0.2.175" 342 + source = "registry+https://github.com/rust-lang/crates.io-index" 343 + checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" 344 + 345 + [[package]] 346 + name = "linked-hash-map" 347 + version = "0.5.6" 348 + source = "registry+https://github.com/rust-lang/crates.io-index" 349 + checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 350 + 351 + [[package]] 352 + name = "litemap" 353 + version = "0.8.0" 354 + source = "registry+https://github.com/rust-lang/crates.io-index" 355 + checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 356 + 357 + [[package]] 358 + name = "lock_api" 359 + version = "0.4.13" 360 + source = "registry+https://github.com/rust-lang/crates.io-index" 361 + checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" 362 + dependencies = [ 363 + "autocfg", 364 + "scopeguard", 365 + ] 366 + 367 + [[package]] 368 + name = "log" 369 + version = "0.4.28" 370 + source = "registry+https://github.com/rust-lang/crates.io-index" 371 + checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 372 + 373 + [[package]] 374 + name = "lru-cache" 375 + version = "0.1.2" 376 + source = "registry+https://github.com/rust-lang/crates.io-index" 377 + checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 378 + dependencies = [ 379 + "linked-hash-map", 380 + ] 381 + 382 + [[package]] 383 + name = "matches" 384 + version = "0.1.10" 385 + source = "registry+https://github.com/rust-lang/crates.io-index" 386 + checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 387 + 388 + [[package]] 389 + name = "memchr" 390 + version = "2.7.5" 391 + source = "registry+https://github.com/rust-lang/crates.io-index" 392 + checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" 393 + 394 + [[package]] 395 + name = "miniz_oxide" 396 + version = "0.8.9" 397 + source = "registry+https://github.com/rust-lang/crates.io-index" 398 + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 399 + dependencies = [ 400 + "adler2", 401 + ] 402 + 403 + [[package]] 404 + name = "mio" 405 + version = "1.0.4" 406 + source = "registry+https://github.com/rust-lang/crates.io-index" 407 + checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 408 + dependencies = [ 409 + "libc", 410 + "wasi", 411 + "windows-sys", 412 + ] 413 + 414 + [[package]] 415 + name = "object" 416 + version = "0.36.7" 417 + source = "registry+https://github.com/rust-lang/crates.io-index" 418 + checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" 419 + dependencies = [ 420 + "memchr", 421 + ] 422 + 423 + [[package]] 424 + name = "parking_lot" 425 + version = "0.11.2" 426 + source = "registry+https://github.com/rust-lang/crates.io-index" 427 + checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 428 + dependencies = [ 429 + "instant", 430 + "lock_api", 431 + "parking_lot_core", 432 + ] 433 + 434 + [[package]] 435 + name = "parking_lot_core" 436 + version = "0.8.6" 437 + source = "registry+https://github.com/rust-lang/crates.io-index" 438 + checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 439 + dependencies = [ 440 + "cfg-if", 441 + "instant", 442 + "libc", 443 + "redox_syscall", 444 + "smallvec", 445 + "winapi", 446 + ] 447 + 448 + [[package]] 449 + name = "percent-encoding" 450 + version = "2.3.2" 451 + source = "registry+https://github.com/rust-lang/crates.io-index" 452 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 453 + 454 + [[package]] 455 + name = "pin-project-lite" 456 + version = "0.2.16" 457 + source = "registry+https://github.com/rust-lang/crates.io-index" 458 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 459 + 460 + [[package]] 461 + name = "pin-utils" 462 + version = "0.1.0" 463 + source = "registry+https://github.com/rust-lang/crates.io-index" 464 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 465 + 466 + [[package]] 467 + name = "potential_utf" 468 + version = "0.1.3" 469 + source = "registry+https://github.com/rust-lang/crates.io-index" 470 + checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 471 + dependencies = [ 472 + "zerovec", 473 + ] 474 + 475 + [[package]] 476 + name = "ppv-lite86" 477 + version = "0.2.21" 478 + source = "registry+https://github.com/rust-lang/crates.io-index" 479 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 480 + dependencies = [ 481 + "zerocopy", 482 + ] 483 + 484 + [[package]] 485 + name = "proc-macro2" 486 + version = "1.0.101" 487 + source = "registry+https://github.com/rust-lang/crates.io-index" 488 + checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" 489 + dependencies = [ 490 + "unicode-ident", 491 + ] 492 + 493 + [[package]] 494 + name = "quote" 495 + version = "1.0.40" 496 + source = "registry+https://github.com/rust-lang/crates.io-index" 497 + checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" 498 + dependencies = [ 499 + "proc-macro2", 500 + ] 501 + 502 + [[package]] 503 + name = "rand" 504 + version = "0.8.5" 505 + source = "registry+https://github.com/rust-lang/crates.io-index" 506 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 507 + dependencies = [ 508 + "libc", 509 + "rand_chacha", 510 + "rand_core", 511 + ] 512 + 513 + [[package]] 514 + name = "rand_chacha" 515 + version = "0.3.1" 516 + source = "registry+https://github.com/rust-lang/crates.io-index" 517 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 518 + dependencies = [ 519 + "ppv-lite86", 520 + "rand_core", 521 + ] 522 + 523 + [[package]] 524 + name = "rand_core" 525 + version = "0.6.4" 526 + source = "registry+https://github.com/rust-lang/crates.io-index" 527 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 528 + dependencies = [ 529 + "getrandom", 530 + ] 531 + 532 + [[package]] 533 + name = "redox_syscall" 534 + version = "0.2.16" 535 + source = "registry+https://github.com/rust-lang/crates.io-index" 536 + checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 537 + dependencies = [ 538 + "bitflags 1.3.2", 539 + ] 540 + 541 + [[package]] 542 + name = "resolv-conf" 543 + version = "0.7.4" 544 + source = "registry+https://github.com/rust-lang/crates.io-index" 545 + checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" 546 + 547 + [[package]] 548 + name = "rustc-demangle" 549 + version = "0.1.26" 550 + source = "registry+https://github.com/rust-lang/crates.io-index" 551 + checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 552 + 553 + [[package]] 554 + name = "scopeguard" 555 + version = "1.2.0" 556 + source = "registry+https://github.com/rust-lang/crates.io-index" 557 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 558 + 559 + [[package]] 560 + name = "serde" 561 + version = "1.0.219" 562 + source = "registry+https://github.com/rust-lang/crates.io-index" 563 + checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" 564 + dependencies = [ 565 + "serde_derive", 566 + ] 567 + 568 + [[package]] 569 + name = "serde_derive" 570 + version = "1.0.219" 571 + source = "registry+https://github.com/rust-lang/crates.io-index" 572 + checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" 573 + dependencies = [ 574 + "proc-macro2", 575 + "quote", 576 + "syn 2.0.106", 577 + ] 578 + 579 + [[package]] 580 + name = "slab" 581 + version = "0.4.11" 582 + source = "registry+https://github.com/rust-lang/crates.io-index" 583 + checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 584 + 585 + [[package]] 586 + name = "smallvec" 587 + version = "1.15.1" 588 + source = "registry+https://github.com/rust-lang/crates.io-index" 589 + checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 590 + 591 + [[package]] 592 + name = "socket2" 593 + version = "0.3.19" 594 + source = "registry+https://github.com/rust-lang/crates.io-index" 595 + checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" 596 + dependencies = [ 597 + "cfg-if", 598 + "libc", 599 + "winapi", 600 + ] 601 + 602 + [[package]] 603 + name = "socket2" 604 + version = "0.6.0" 605 + source = "registry+https://github.com/rust-lang/crates.io-index" 606 + checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" 607 + dependencies = [ 608 + "libc", 609 + "windows-sys", 610 + ] 611 + 612 + [[package]] 613 + name = "stable_deref_trait" 614 + version = "1.2.0" 615 + source = "registry+https://github.com/rust-lang/crates.io-index" 616 + checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 617 + 618 + [[package]] 619 + name = "syn" 620 + version = "1.0.109" 621 + source = "registry+https://github.com/rust-lang/crates.io-index" 622 + checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 623 + dependencies = [ 624 + "proc-macro2", 625 + "quote", 626 + "unicode-ident", 627 + ] 628 + 629 + [[package]] 630 + name = "syn" 631 + version = "2.0.106" 632 + source = "registry+https://github.com/rust-lang/crates.io-index" 633 + checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" 634 + dependencies = [ 635 + "proc-macro2", 636 + "quote", 637 + "unicode-ident", 638 + ] 639 + 640 + [[package]] 641 + name = "synstructure" 642 + version = "0.13.2" 643 + source = "registry+https://github.com/rust-lang/crates.io-index" 644 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 645 + dependencies = [ 646 + "proc-macro2", 647 + "quote", 648 + "syn 2.0.106", 649 + ] 650 + 651 + [[package]] 12 652 name = "tangled-on-commit" 13 653 version = "0.1.0" 14 654 dependencies = [ 15 655 "json", 656 + "trust-dns-resolver", 657 + ] 658 + 659 + [[package]] 660 + name = "thiserror" 661 + version = "1.0.69" 662 + source = "registry+https://github.com/rust-lang/crates.io-index" 663 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 664 + dependencies = [ 665 + "thiserror-impl", 666 + ] 667 + 668 + [[package]] 669 + name = "thiserror-impl" 670 + version = "1.0.69" 671 + source = "registry+https://github.com/rust-lang/crates.io-index" 672 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 673 + dependencies = [ 674 + "proc-macro2", 675 + "quote", 676 + "syn 2.0.106", 677 + ] 678 + 679 + [[package]] 680 + name = "tinystr" 681 + version = "0.8.1" 682 + source = "registry+https://github.com/rust-lang/crates.io-index" 683 + checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 684 + dependencies = [ 685 + "displaydoc", 686 + "zerovec", 687 + ] 688 + 689 + [[package]] 690 + name = "tinyvec" 691 + version = "1.10.0" 692 + source = "registry+https://github.com/rust-lang/crates.io-index" 693 + checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 694 + dependencies = [ 695 + "tinyvec_macros", 696 + ] 697 + 698 + [[package]] 699 + name = "tinyvec_macros" 700 + version = "0.1.1" 701 + source = "registry+https://github.com/rust-lang/crates.io-index" 702 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 703 + 704 + [[package]] 705 + name = "tokio" 706 + version = "1.47.1" 707 + source = "registry+https://github.com/rust-lang/crates.io-index" 708 + checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" 709 + dependencies = [ 710 + "backtrace", 711 + "io-uring", 712 + "libc", 713 + "mio", 714 + "pin-project-lite", 715 + "slab", 716 + "socket2 0.6.0", 717 + "windows-sys", 718 + ] 719 + 720 + [[package]] 721 + name = "trust-dns-proto" 722 + version = "0.20.4" 723 + source = "registry+https://github.com/rust-lang/crates.io-index" 724 + checksum = "ca94d4e9feb6a181c690c4040d7a24ef34018d8313ac5044a61d21222ae24e31" 725 + dependencies = [ 726 + "async-trait", 727 + "cfg-if", 728 + "data-encoding", 729 + "enum-as-inner", 730 + "futures-channel", 731 + "futures-io", 732 + "futures-util", 733 + "idna 0.2.3", 734 + "ipnet", 735 + "lazy_static", 736 + "log", 737 + "rand", 738 + "smallvec", 739 + "thiserror", 740 + "tinyvec", 741 + "tokio", 742 + "url", 743 + ] 744 + 745 + [[package]] 746 + name = "trust-dns-resolver" 747 + version = "0.20.4" 748 + source = "registry+https://github.com/rust-lang/crates.io-index" 749 + checksum = "ecae383baad9995efaa34ce8e57d12c3f305e545887472a492b838f4b5cfb77a" 750 + dependencies = [ 751 + "cfg-if", 752 + "futures-util", 753 + "ipconfig", 754 + "lazy_static", 755 + "log", 756 + "lru-cache", 757 + "parking_lot", 758 + "resolv-conf", 759 + "smallvec", 760 + "thiserror", 761 + "tokio", 762 + "trust-dns-proto", 763 + ] 764 + 765 + [[package]] 766 + name = "unicode-bidi" 767 + version = "0.3.18" 768 + source = "registry+https://github.com/rust-lang/crates.io-index" 769 + checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" 770 + 771 + [[package]] 772 + name = "unicode-ident" 773 + version = "1.0.18" 774 + source = "registry+https://github.com/rust-lang/crates.io-index" 775 + checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" 776 + 777 + [[package]] 778 + name = "unicode-normalization" 779 + version = "0.1.24" 780 + source = "registry+https://github.com/rust-lang/crates.io-index" 781 + checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" 782 + dependencies = [ 783 + "tinyvec", 784 + ] 785 + 786 + [[package]] 787 + name = "url" 788 + version = "2.5.7" 789 + source = "registry+https://github.com/rust-lang/crates.io-index" 790 + checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 791 + dependencies = [ 792 + "form_urlencoded", 793 + "idna 1.1.0", 794 + "percent-encoding", 795 + "serde", 796 + ] 797 + 798 + [[package]] 799 + name = "utf8_iter" 800 + version = "1.0.4" 801 + source = "registry+https://github.com/rust-lang/crates.io-index" 802 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 803 + 804 + [[package]] 805 + name = "wasi" 806 + version = "0.11.1+wasi-snapshot-preview1" 807 + source = "registry+https://github.com/rust-lang/crates.io-index" 808 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 809 + 810 + [[package]] 811 + name = "widestring" 812 + version = "0.4.3" 813 + source = "registry+https://github.com/rust-lang/crates.io-index" 814 + checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" 815 + 816 + [[package]] 817 + name = "winapi" 818 + version = "0.3.9" 819 + source = "registry+https://github.com/rust-lang/crates.io-index" 820 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 821 + dependencies = [ 822 + "winapi-i686-pc-windows-gnu", 823 + "winapi-x86_64-pc-windows-gnu", 824 + ] 825 + 826 + [[package]] 827 + name = "winapi-i686-pc-windows-gnu" 828 + version = "0.4.0" 829 + source = "registry+https://github.com/rust-lang/crates.io-index" 830 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 831 + 832 + [[package]] 833 + name = "winapi-x86_64-pc-windows-gnu" 834 + version = "0.4.0" 835 + source = "registry+https://github.com/rust-lang/crates.io-index" 836 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 837 + 838 + [[package]] 839 + name = "windows-sys" 840 + version = "0.59.0" 841 + source = "registry+https://github.com/rust-lang/crates.io-index" 842 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 843 + dependencies = [ 844 + "windows-targets", 845 + ] 846 + 847 + [[package]] 848 + name = "windows-targets" 849 + version = "0.52.6" 850 + source = "registry+https://github.com/rust-lang/crates.io-index" 851 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 852 + dependencies = [ 853 + "windows_aarch64_gnullvm", 854 + "windows_aarch64_msvc", 855 + "windows_i686_gnu", 856 + "windows_i686_gnullvm", 857 + "windows_i686_msvc", 858 + "windows_x86_64_gnu", 859 + "windows_x86_64_gnullvm", 860 + "windows_x86_64_msvc", 861 + ] 862 + 863 + [[package]] 864 + name = "windows_aarch64_gnullvm" 865 + version = "0.52.6" 866 + source = "registry+https://github.com/rust-lang/crates.io-index" 867 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 868 + 869 + [[package]] 870 + name = "windows_aarch64_msvc" 871 + version = "0.52.6" 872 + source = "registry+https://github.com/rust-lang/crates.io-index" 873 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 874 + 875 + [[package]] 876 + name = "windows_i686_gnu" 877 + version = "0.52.6" 878 + source = "registry+https://github.com/rust-lang/crates.io-index" 879 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 880 + 881 + [[package]] 882 + name = "windows_i686_gnullvm" 883 + version = "0.52.6" 884 + source = "registry+https://github.com/rust-lang/crates.io-index" 885 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 886 + 887 + [[package]] 888 + name = "windows_i686_msvc" 889 + version = "0.52.6" 890 + source = "registry+https://github.com/rust-lang/crates.io-index" 891 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 892 + 893 + [[package]] 894 + name = "windows_x86_64_gnu" 895 + version = "0.52.6" 896 + source = "registry+https://github.com/rust-lang/crates.io-index" 897 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 898 + 899 + [[package]] 900 + name = "windows_x86_64_gnullvm" 901 + version = "0.52.6" 902 + source = "registry+https://github.com/rust-lang/crates.io-index" 903 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 904 + 905 + [[package]] 906 + name = "windows_x86_64_msvc" 907 + version = "0.52.6" 908 + source = "registry+https://github.com/rust-lang/crates.io-index" 909 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 910 + 911 + [[package]] 912 + name = "winreg" 913 + version = "0.6.2" 914 + source = "registry+https://github.com/rust-lang/crates.io-index" 915 + checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 916 + dependencies = [ 917 + "winapi", 918 + ] 919 + 920 + [[package]] 921 + name = "writeable" 922 + version = "0.6.1" 923 + source = "registry+https://github.com/rust-lang/crates.io-index" 924 + checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 925 + 926 + [[package]] 927 + name = "yoke" 928 + version = "0.8.0" 929 + source = "registry+https://github.com/rust-lang/crates.io-index" 930 + checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 931 + dependencies = [ 932 + "serde", 933 + "stable_deref_trait", 934 + "yoke-derive", 935 + "zerofrom", 936 + ] 937 + 938 + [[package]] 939 + name = "yoke-derive" 940 + version = "0.8.0" 941 + source = "registry+https://github.com/rust-lang/crates.io-index" 942 + checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 943 + dependencies = [ 944 + "proc-macro2", 945 + "quote", 946 + "syn 2.0.106", 947 + "synstructure", 948 + ] 949 + 950 + [[package]] 951 + name = "zerocopy" 952 + version = "0.8.26" 953 + source = "registry+https://github.com/rust-lang/crates.io-index" 954 + checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" 955 + dependencies = [ 956 + "zerocopy-derive", 957 + ] 958 + 959 + [[package]] 960 + name = "zerocopy-derive" 961 + version = "0.8.26" 962 + source = "registry+https://github.com/rust-lang/crates.io-index" 963 + checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" 964 + dependencies = [ 965 + "proc-macro2", 966 + "quote", 967 + "syn 2.0.106", 968 + ] 969 + 970 + [[package]] 971 + name = "zerofrom" 972 + version = "0.1.6" 973 + source = "registry+https://github.com/rust-lang/crates.io-index" 974 + checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 975 + dependencies = [ 976 + "zerofrom-derive", 977 + ] 978 + 979 + [[package]] 980 + name = "zerofrom-derive" 981 + version = "0.1.6" 982 + source = "registry+https://github.com/rust-lang/crates.io-index" 983 + checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 984 + dependencies = [ 985 + "proc-macro2", 986 + "quote", 987 + "syn 2.0.106", 988 + "synstructure", 989 + ] 990 + 991 + [[package]] 992 + name = "zerotrie" 993 + version = "0.2.2" 994 + source = "registry+https://github.com/rust-lang/crates.io-index" 995 + checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 996 + dependencies = [ 997 + "displaydoc", 998 + "yoke", 999 + "zerofrom", 1000 + ] 1001 + 1002 + [[package]] 1003 + name = "zerovec" 1004 + version = "0.11.4" 1005 + source = "registry+https://github.com/rust-lang/crates.io-index" 1006 + checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 1007 + dependencies = [ 1008 + "yoke", 1009 + "zerofrom", 1010 + "zerovec-derive", 1011 + ] 1012 + 1013 + [[package]] 1014 + name = "zerovec-derive" 1015 + version = "0.11.1" 1016 + source = "registry+https://github.com/rust-lang/crates.io-index" 1017 + checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 1018 + dependencies = [ 1019 + "proc-macro2", 1020 + "quote", 1021 + "syn 2.0.106", 16 1022 ]
+1
Cargo.toml
··· 7 7 8 8 [dependencies] 9 9 json = "0.12.4" 10 + trust-dns-resolver = "0.20.1"
+47
src/main.rs
··· 1 + use trust_dns_resolver::Resolver; 2 + use trust_dns_resolver::config::{ResolverConfig, ResolverOpts}; 3 + 1 4 fn help() { 2 5 println!( 3 6 "Help: tangled-on-commit ··· 213 216 return Err(()); 214 217 } 215 218 219 + #[derive(Debug)] 220 + struct DidDoc { 221 + did: String, 222 + } 223 + 224 + fn get_did(handle: String) -> Result<DidDoc, ()> { 225 + // create a txt resolver 226 + let resolver = match Resolver::new(ResolverConfig::default(), ResolverOpts::default()) { 227 + Ok(val) => val, 228 + Err(_) => return Err(()), 229 + }; 230 + 231 + // resolve _atproto.handle to a TXT record 232 + let txt_res = match resolver.txt_lookup("_atproto.".to_owned() + &handle) { 233 + Ok(val) => val, 234 + Err(_) => return Err(()), // collect all entries and convert to strings 235 + } 236 + .into_iter() 237 + .map(|x| x.to_string()) 238 + .collect::<Vec<_>>(); 239 + 240 + // filter entries which do not start with `did=` 241 + let did_res = txt_res 242 + .clone() 243 + .extract_if(.., |x| x.starts_with("did=")) 244 + .collect::<Vec<_>>(); 245 + // only 1 did= can exist 246 + // https://atproto.com/specs/handle#:~:text=If%20multiple%20valid%20records%20with%20different%20DIDs%20are%20present,%20resolution%20should%20fail. 247 + if did_res.len() != 1 { 248 + return Err(()); 249 + } 250 + let did = did_res[0].clone(); 251 + 252 + return Ok(DidDoc { did: did.clone() }); 253 + } 254 + 216 255 fn main() -> Result<(), ()> { 217 256 // load configuration 218 257 let config = match load_config() { ··· 225 264 println!("{:#?}", config); 226 265 227 266 // resolve handle to did 267 + let did_doc = match get_did(config.handle) { 268 + Ok(res) => res, 269 + Err(_) => { 270 + // q 271 + return Err(()); 272 + } 273 + }; 274 + println!("{:#?}", did_doc); 228 275 // resolve did+repoName to knotserver 229 276 230 277 // connect to /events on knotserver