difftreelog
feat batch builds in legacy eval
in: trunk
17 files changed
Cargo.lockdiffbeforeafterboth131314[[package]]14[[package]]15name = "addr2line"15name = "addr2line"16version = "0.22.0"16version = "0.24.2"17source = "registry+https://github.com/rust-lang/crates.io-index"17source = "registry+https://github.com/rust-lang/crates.io-index"18checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678"18checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"19dependencies = [19dependencies = [20 "gimli",20 "gimli",21]21]222223[[package]]23[[package]]24name = "adler"24name = "adler2"25version = "1.0.2"25version = "2.0.0"26source = "registry+https://github.com/rust-lang/crates.io-index"26source = "registry+https://github.com/rust-lang/crates.io-index"27checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"27checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"282829[[package]]29[[package]]30name = "aead"30name = "aead"124124125[[package]]125[[package]]126name = "alejandra"126name = "alejandra"127version = "3.0.0"127version = "3.1.0"128source = "git+https://github.com/kamadorueda/alejandra#bb688cc2c22e43b3cd710eadc0340399c2de3151"128source = "git+https://github.com/kamadorueda/alejandra#264e23546663a5676a77174cab31340a81aa2cc0"129dependencies = [129dependencies = [130 "mimalloc",130 "mimalloc",131 "rnix",131 "rnix",149149150[[package]]150[[package]]151name = "anstream"151name = "anstream"152version = "0.6.14"152version = "0.6.18"153source = "registry+https://github.com/rust-lang/crates.io-index"153source = "registry+https://github.com/rust-lang/crates.io-index"154checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"154checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"155dependencies = [155dependencies = [156 "anstyle",156 "anstyle",157 "anstyle-parse",157 "anstyle-parse",164164165[[package]]165[[package]]166name = "anstyle"166name = "anstyle"167version = "1.0.7"167version = "1.0.10"168source = "registry+https://github.com/rust-lang/crates.io-index"168source = "registry+https://github.com/rust-lang/crates.io-index"169checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"169checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"170170171[[package]]171[[package]]172name = "anstyle-parse"172name = "anstyle-parse"173version = "0.2.4"173version = "0.2.6"174source = "registry+https://github.com/rust-lang/crates.io-index"174source = "registry+https://github.com/rust-lang/crates.io-index"175checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"175checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"176dependencies = [176dependencies = [177 "utf8parse",177 "utf8parse",178]178]179179180[[package]]180[[package]]181name = "anstyle-query"181name = "anstyle-query"182version = "1.0.3"182version = "1.1.2"183source = "registry+https://github.com/rust-lang/crates.io-index"183source = "registry+https://github.com/rust-lang/crates.io-index"184checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5"184checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"185dependencies = [185dependencies = [186 "windows-sys 0.52.0",186 "windows-sys 0.59.0",187]187]188188189[[package]]189[[package]]190name = "anstyle-wincon"190name = "anstyle-wincon"191version = "3.0.3"191version = "3.0.6"192source = "registry+https://github.com/rust-lang/crates.io-index"192source = "registry+https://github.com/rust-lang/crates.io-index"193checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"193checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"194dependencies = [194dependencies = [195 "anstyle",195 "anstyle",196 "windows-sys 0.52.0",196 "windows-sys 0.59.0",197]197]198198199[[package]]199[[package]]200name = "anyhow"200name = "anyhow"201version = "1.0.86"201version = "1.0.93"202source = "registry+https://github.com/rust-lang/crates.io-index"202source = "registry+https://github.com/rust-lang/crates.io-index"203checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"203checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"204204205[[package]]205[[package]]206name = "arc-swap"206name = "arc-swap"210210211[[package]]211[[package]]212name = "arrayvec"212name = "arrayvec"213version = "0.7.4"213version = "0.7.6"214source = "registry+https://github.com/rust-lang/crates.io-index"214source = "registry+https://github.com/rust-lang/crates.io-index"215checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"215checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"216216217[[package]]217[[package]]218name = "async-stream"218name = "async-stream"219version = "0.3.5"219version = "0.3.6"220source = "registry+https://github.com/rust-lang/crates.io-index"220source = "registry+https://github.com/rust-lang/crates.io-index"221checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"221checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"222dependencies = [222dependencies = [223 "async-stream-impl",223 "async-stream-impl",224 "futures-core",224 "futures-core",227227228[[package]]228[[package]]229name = "async-stream-impl"229name = "async-stream-impl"230version = "0.3.5"230version = "0.3.6"231source = "registry+https://github.com/rust-lang/crates.io-index"231source = "registry+https://github.com/rust-lang/crates.io-index"232checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"232checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"233dependencies = [233dependencies = [234 "proc-macro2",234 "proc-macro2",235 "quote",235 "quote",236 "syn 2.0.76",236 "syn 2.0.87",237]237]238238239[[package]]239[[package]]240name = "async-trait"240name = "async-trait"241version = "0.1.81"241version = "0.1.83"242source = "registry+https://github.com/rust-lang/crates.io-index"242source = "registry+https://github.com/rust-lang/crates.io-index"243checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"243checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"244dependencies = [244dependencies = [245 "proc-macro2",245 "proc-macro2",246 "quote",246 "quote",247 "syn 2.0.76",247 "syn 2.0.87",248]248]249249250[[package]]250[[package]]255255256[[package]]256[[package]]257name = "autocfg"257name = "autocfg"258version = "1.3.0"258version = "1.4.0"259source = "registry+https://github.com/rust-lang/crates.io-index"259source = "registry+https://github.com/rust-lang/crates.io-index"260checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"260checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"261261262[[package]]262[[package]]263name = "axum"263name = "axum"264version = "0.7.5"264version = "0.7.7"265source = "registry+https://github.com/rust-lang/crates.io-index"265source = "registry+https://github.com/rust-lang/crates.io-index"266checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"266checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae"267dependencies = [267dependencies = [268 "async-trait",268 "async-trait",269 "axum-core",269 "axum-core",281 "rustversion",281 "rustversion",282 "serde",282 "serde",283 "sync_wrapper 1.0.1",283 "sync_wrapper 1.0.1",284 "tower",284 "tower 0.5.1",285 "tower-layer",285 "tower-layer",286 "tower-service",286 "tower-service",287]287]288288289[[package]]289[[package]]290name = "axum-core"290name = "axum-core"291version = "0.4.3"291version = "0.4.5"292source = "registry+https://github.com/rust-lang/crates.io-index"292source = "registry+https://github.com/rust-lang/crates.io-index"293checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"293checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199"294dependencies = [294dependencies = [295 "async-trait",295 "async-trait",296 "bytes",296 "bytes",301 "mime",301 "mime",302 "pin-project-lite",302 "pin-project-lite",303 "rustversion",303 "rustversion",304 "sync_wrapper 0.1.2",304 "sync_wrapper 1.0.1",305 "tower-layer",305 "tower-layer",306 "tower-service",306 "tower-service",307]307]308308309[[package]]309[[package]]310name = "backtrace"310name = "backtrace"311version = "0.3.72"311version = "0.3.74"312source = "registry+https://github.com/rust-lang/crates.io-index"312source = "registry+https://github.com/rust-lang/crates.io-index"313checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11"313checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"314dependencies = [314dependencies = [315 "addr2line",315 "addr2line",316 "cc",317 "cfg-if",316 "cfg-if",318 "libc",317 "libc",319 "miniz_oxide",318 "miniz_oxide",320 "object",319 "object",321 "rustc-demangle",320 "rustc-demangle",321 "windows-targets 0.52.6",322]322]323323324[[package]]324[[package]]339source = "registry+https://github.com/rust-lang/crates.io-index"339source = "registry+https://github.com/rust-lang/crates.io-index"340checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"340checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"341342[[package]]343name = "basic-toml"344version = "0.1.9"345source = "registry+https://github.com/rust-lang/crates.io-index"346checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8"347dependencies = [348 "serde",349]341350342[[package]]351[[package]]343name = "bcrypt-pbkdf"352name = "bcrypt-pbkdf"367 "tracing-indicatif",376 "tracing-indicatif",368]377]378379[[package]]380name = "bindgen"381version = "0.69.5"382source = "registry+https://github.com/rust-lang/crates.io-index"383checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"384dependencies = [385 "bitflags",386 "cexpr",387 "clang-sys",388 "itertools 0.12.1",389 "lazy_static",390 "lazycell",391 "log",392 "prettyplease",393 "proc-macro2",394 "quote",395 "regex",396 "rustc-hash",397 "shlex",398 "syn 2.0.87",399 "which",400]369401370[[package]]402[[package]]371name = "bitflags"403name = "bitflags"372version = "2.5.0"404version = "2.6.0"373source = "registry+https://github.com/rust-lang/crates.io-index"405source = "registry+https://github.com/rust-lang/crates.io-index"374checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"406checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"375dependencies = [407dependencies = [376 "serde",408 "serde",377]409]424456425[[package]]457[[package]]426name = "bytes"458name = "bytes"427version = "1.6.0"459version = "1.8.0"428source = "registry+https://github.com/rust-lang/crates.io-index"460source = "registry+https://github.com/rust-lang/crates.io-index"429checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9"461checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da"430462431[[package]]463[[package]]432name = "cbc"464name = "cbc"448480449[[package]]481[[package]]450name = "cc"482name = "cc"451version = "1.0.98"483version = "1.2.0"452source = "registry+https://github.com/rust-lang/crates.io-index"484source = "registry+https://github.com/rust-lang/crates.io-index"453checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f"485checksum = "1aeb932158bd710538c73702db6945cb68a8fb08c519e6e12706b94263b36db8"486dependencies = [487 "shlex",488]489490[[package]]491name = "cexpr"492version = "0.6.0"493source = "registry+https://github.com/rust-lang/crates.io-index"494checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"495dependencies = [496 "nom",497]454498455[[package]]499[[package]]456name = "cfg-if"500name = "cfg-if"500 "num-traits",544 "num-traits",501 "serde",545 "serde",502 "wasm-bindgen",546 "wasm-bindgen",503 "windows-targets 0.52.5",547 "windows-targets 0.52.6",504]548]505549506[[package]]550[[package]]514 "zeroize",558 "zeroize",515]559]560561[[package]]562name = "clang-sys"563version = "1.8.1"564source = "registry+https://github.com/rust-lang/crates.io-index"565checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"566dependencies = [567 "glob",568 "libc",569 "libloading",570]516571517[[package]]572[[package]]518name = "clap"573name = "clap"519version = "4.5.4"574version = "4.5.20"520source = "registry+https://github.com/rust-lang/crates.io-index"575source = "registry+https://github.com/rust-lang/crates.io-index"521checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"576checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8"522dependencies = [577dependencies = [523 "clap_builder",578 "clap_builder",524 "clap_derive",579 "clap_derive",525]580]526581527[[package]]582[[package]]528name = "clap_builder"583name = "clap_builder"529version = "4.5.2"584version = "4.5.20"530source = "registry+https://github.com/rust-lang/crates.io-index"585source = "registry+https://github.com/rust-lang/crates.io-index"531checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"586checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54"532dependencies = [587dependencies = [533 "anstream",588 "anstream",534 "anstyle",589 "anstyle",535 "clap_lex",590 "clap_lex",536 "strsim 0.11.1",591 "strsim 0.11.1",537 "terminal_size",592 "terminal_size",538 "unicase",593 "unicase",539 "unicode-width",594 "unicode-width 0.2.0",540]595]541596542[[package]]597[[package]]543name = "clap_complete"598name = "clap_complete"544version = "4.5.2"599version = "4.5.37"545source = "registry+https://github.com/rust-lang/crates.io-index"600source = "registry+https://github.com/rust-lang/crates.io-index"546checksum = "dd79504325bf38b10165b02e89b4347300f855f273c4cb30c4a3209e6583275e"601checksum = "11611dca53440593f38e6b25ec629de50b14cdfa63adc0fb856115a2c6d97595"547dependencies = [602dependencies = [548 "clap",603 "clap",549]604]550605551[[package]]606[[package]]552name = "clap_derive"607name = "clap_derive"553version = "4.5.4"608version = "4.5.18"554source = "registry+https://github.com/rust-lang/crates.io-index"609source = "registry+https://github.com/rust-lang/crates.io-index"555checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"610checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab"556dependencies = [611dependencies = [557 "heck 0.5.0",612 "heck 0.5.0",558 "proc-macro2",613 "proc-macro2",559 "quote",614 "quote",560 "syn 2.0.76",615 "syn 2.0.87",561]616]562617563[[package]]618[[package]]564name = "clap_lex"619name = "clap_lex"565version = "0.7.0"620version = "0.7.2"566source = "registry+https://github.com/rust-lang/crates.io-index"621source = "registry+https://github.com/rust-lang/crates.io-index"567checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"622checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"568623569[[package]]624[[package]]570name = "colorchoice"625name = "colorchoice"571version = "1.0.1"626version = "1.0.3"572source = "registry+https://github.com/rust-lang/crates.io-index"627source = "registry+https://github.com/rust-lang/crates.io-index"573checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"628checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"574629575[[package]]630[[package]]576name = "console"631name = "console"581 "encode_unicode",636 "encode_unicode",582 "lazy_static",637 "lazy_static",583 "libc",638 "libc",584 "unicode-width",639 "unicode-width 0.1.14",585 "windows-sys 0.52.0",640 "windows-sys 0.52.0",586]641]587642602657603[[package]]658[[package]]604name = "core-foundation-sys"659name = "core-foundation-sys"605version = "0.8.6"660version = "0.8.7"606source = "registry+https://github.com/rust-lang/crates.io-index"661source = "registry+https://github.com/rust-lang/crates.io-index"607checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"662checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"608663609[[package]]664[[package]]610name = "countme"665name = "countme"614669615[[package]]670[[package]]616name = "cpufeatures"671name = "cpufeatures"617version = "0.2.12"672version = "0.2.15"618source = "registry+https://github.com/rust-lang/crates.io-index"673source = "registry+https://github.com/rust-lang/crates.io-index"619checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"674checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6"620dependencies = [675dependencies = [621 "libc",676 "libc",622]677]631 "crossterm_winapi",686 "crossterm_winapi",632 "filedescriptor",687 "filedescriptor",633 "libc",688 "libc",634 "mio",689 "mio 0.8.11",635 "parking_lot",690 "parking_lot",636 "signal-hook",691 "signal-hook",637 "signal-hook-mio",692 "signal-hook-mio",669724670[[package]]725[[package]]671name = "curve25519-dalek"726name = "curve25519-dalek"672version = "4.1.2"727version = "4.1.3"673source = "registry+https://github.com/rust-lang/crates.io-index"728source = "registry+https://github.com/rust-lang/crates.io-index"674checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348"729checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"675dependencies = [730dependencies = [676 "cfg-if",731 "cfg-if",677 "cpufeatures",732 "cpufeatures",678 "curve25519-dalek-derive",733 "curve25519-dalek-derive",679 "digest",734 "digest",680 "fiat-crypto",735 "fiat-crypto",681 "platforms",682 "rustc_version",736 "rustc_version",683 "subtle",737 "subtle",684 "zeroize",738 "zeroize",692dependencies = [746dependencies = [693 "proc-macro2",747 "proc-macro2",694 "quote",748 "quote",695 "syn 2.0.76",749 "syn 2.0.87",696]750]697751698[[package]]752[[package]]742796743[[package]]797[[package]]744name = "displaydoc"798name = "displaydoc"745version = "0.2.4"799version = "0.2.5"746source = "registry+https://github.com/rust-lang/crates.io-index"800source = "registry+https://github.com/rust-lang/crates.io-index"747checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"801checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"748dependencies = [802dependencies = [749 "proc-macro2",803 "proc-macro2",750 "quote",804 "quote",751 "syn 2.0.76",805 "syn 2.0.87",752]806]753807754[[package]]808[[package]]778832779[[package]]833[[package]]780name = "either"834name = "either"781version = "1.12.0"835version = "1.13.0"782source = "registry+https://github.com/rust-lang/crates.io-index"836source = "registry+https://github.com/rust-lang/crates.io-index"783checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"837checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"784838785[[package]]839[[package]]786name = "encode_unicode"840name = "encode_unicode"806860807[[package]]861[[package]]808name = "fastrand"862name = "fastrand"809version = "2.1.0"863version = "2.2.0"810source = "registry+https://github.com/rust-lang/crates.io-index"864source = "registry+https://github.com/rust-lang/crates.io-index"811checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"865checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4"812866813[[package]]867[[package]]814name = "fiat-crypto"868name = "fiat-crypto"823checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"877checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"824dependencies = [878dependencies = [825 "libc",879 "libc",826 "thiserror",880 "thiserror 1.0.69",827 "winapi",881 "winapi",828]882]829883833source = "registry+https://github.com/rust-lang/crates.io-index"887source = "registry+https://github.com/rust-lang/crates.io-index"834checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2"888checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2"835dependencies = [889dependencies = [836 "toml 0.5.11",890 "toml",837]891]838892839[[package]]893[[package]]863 "hostname",917 "hostname",864 "human-repr",918 "human-repr",865 "indicatif",919 "indicatif",866 "itertools",920 "itertools 0.13.0",867 "nix-eval",921 "nix-eval",868 "nixlike",922 "nixlike",869 "nom",923 "nom",870 "openssh 0.10.4",924 "openssh 0.10.5",871 "owo-colors",925 "owo-colors",872 "peg",926 "peg",873 "regex",927 "regex",896 "fleet-shared",950 "fleet-shared",897 "futures",951 "futures",898 "hostname",952 "hostname",899 "itertools",953 "itertools 0.13.0",900 "nix-eval",954 "nix-eval",901 "nixlike",955 "nixlike",902 "nom",956 "nom",903 "openssh 0.11.0",957 "openssh 0.11.3",904 "serde",958 "serde",905 "serde_json",959 "serde_json",906 "tempfile",960 "tempfile",991source = "registry+https://github.com/rust-lang/crates.io-index"1045source = "registry+https://github.com/rust-lang/crates.io-index"992checksum = "2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d"1046checksum = "2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d"993dependencies = [1047dependencies = [994 "thiserror",1048 "thiserror 1.0.69",995]1049]9961050997[[package]]1051[[package]]100210561003[[package]]1057[[package]]1004name = "futures"1058name = "futures"1005version = "0.3.30"1059version = "0.3.31"1006source = "registry+https://github.com/rust-lang/crates.io-index"1060source = "registry+https://github.com/rust-lang/crates.io-index"1007checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"1061checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"1008dependencies = [1062dependencies = [1009 "futures-channel",1063 "futures-channel",1010 "futures-core",1064 "futures-core",101710711018[[package]]1072[[package]]1019name = "futures-channel"1073name = "futures-channel"1020version = "0.3.30"1074version = "0.3.31"1021source = "registry+https://github.com/rust-lang/crates.io-index"1075source = "registry+https://github.com/rust-lang/crates.io-index"1022checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"1076checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"1023dependencies = [1077dependencies = [1024 "futures-core",1078 "futures-core",1025 "futures-sink",1079 "futures-sink",1026]1080]102710811028[[package]]1082[[package]]1029name = "futures-core"1083name = "futures-core"1030version = "0.3.30"1084version = "0.3.31"1031source = "registry+https://github.com/rust-lang/crates.io-index"1085source = "registry+https://github.com/rust-lang/crates.io-index"1032checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"1086checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"103310871034[[package]]1088[[package]]1035name = "futures-executor"1089name = "futures-executor"1036version = "0.3.30"1090version = "0.3.31"1037source = "registry+https://github.com/rust-lang/crates.io-index"1091source = "registry+https://github.com/rust-lang/crates.io-index"1038checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"1092checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"1039dependencies = [1093dependencies = [1040 "futures-core",1094 "futures-core",1041 "futures-task",1095 "futures-task",104410981045[[package]]1099[[package]]1046name = "futures-io"1100name = "futures-io"1047version = "0.3.30"1101version = "0.3.31"1048source = "registry+https://github.com/rust-lang/crates.io-index"1102source = "registry+https://github.com/rust-lang/crates.io-index"1049checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"1103checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"105011041051[[package]]1105[[package]]1052name = "futures-macro"1106name = "futures-macro"1053version = "0.3.30"1107version = "0.3.31"1054source = "registry+https://github.com/rust-lang/crates.io-index"1108source = "registry+https://github.com/rust-lang/crates.io-index"1055checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"1109checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"1056dependencies = [1110dependencies = [1057 "proc-macro2",1111 "proc-macro2",1058 "quote",1112 "quote",1059 "syn 2.0.76",1113 "syn 2.0.87",1060]1114]106111151062[[package]]1116[[package]]1063name = "futures-sink"1117name = "futures-sink"1064version = "0.3.30"1118version = "0.3.31"1065source = "registry+https://github.com/rust-lang/crates.io-index"1119source = "registry+https://github.com/rust-lang/crates.io-index"1066checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"1120checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"106711211068[[package]]1122[[package]]1069name = "futures-task"1123name = "futures-task"1070version = "0.3.30"1124version = "0.3.31"1071source = "registry+https://github.com/rust-lang/crates.io-index"1125source = "registry+https://github.com/rust-lang/crates.io-index"1072checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"1126checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"107311271074[[package]]1128[[package]]1075name = "futures-util"1129name = "futures-util"1076version = "0.3.30"1130version = "0.3.31"1077source = "registry+https://github.com/rust-lang/crates.io-index"1131source = "registry+https://github.com/rust-lang/crates.io-index"1078checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"1132checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"1079dependencies = [1133dependencies = [1080 "futures-channel",1134 "futures-channel",1081 "futures-core",1135 "futures-core",112211761123[[package]]1177[[package]]1124name = "gimli"1178name = "gimli"1125version = "0.29.0"1179version = "0.31.1"1126source = "registry+https://github.com/rust-lang/crates.io-index"1180source = "registry+https://github.com/rust-lang/crates.io-index"1127checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"1181checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"11821183[[package]]1184name = "glob"1185version = "0.3.1"1186source = "registry+https://github.com/rust-lang/crates.io-index"1187checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"112811881129[[package]]1189[[package]]1130name = "h2"1190name = "h2"1138 "futures-core",1198 "futures-core",1139 "futures-sink",1199 "futures-sink",1140 "http",1200 "http",1141 "indexmap 2.2.6",1201 "indexmap 2.6.0",1142 "slab",1202 "slab",1143 "tokio",1203 "tokio",1144 "tokio-util",1204 "tokio-util",1163source = "registry+https://github.com/rust-lang/crates.io-index"1223source = "registry+https://github.com/rust-lang/crates.io-index"1164checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"1224checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"12251226[[package]]1227name = "hashbrown"1228version = "0.15.1"1229source = "registry+https://github.com/rust-lang/crates.io-index"1230checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3"116512311166[[package]]1232[[package]]1167name = "heck"1233name = "heck"1181source = "registry+https://github.com/rust-lang/crates.io-index"1247source = "registry+https://github.com/rust-lang/crates.io-index"1182checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"1248checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"12491250[[package]]1251name = "hermit-abi"1252version = "0.4.0"1253source = "registry+https://github.com/rust-lang/crates.io-index"1254checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"118312551184[[package]]1256[[package]]1185name = "hex"1257name = "hex"1205 "digest",1277 "digest",1206]1278]12791280[[package]]1281name = "home"1282version = "0.5.9"1283source = "registry+https://github.com/rust-lang/crates.io-index"1284checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"1285dependencies = [1286 "windows-sys 0.52.0",1287]120712881208[[package]]1289[[package]]1209name = "hostname"1290name = "hostname"125213331253[[package]]1334[[package]]1254name = "httparse"1335name = "httparse"1255version = "1.9.4"1336version = "1.9.5"1256source = "registry+https://github.com/rust-lang/crates.io-index"1337source = "registry+https://github.com/rust-lang/crates.io-index"1257checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9"1338checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"125813391259[[package]]1340[[package]]1260name = "httpdate"1341name = "httpdate"127013511271[[package]]1352[[package]]1272name = "hyper"1353name = "hyper"1273version = "1.4.1"1354version = "1.5.0"1274source = "registry+https://github.com/rust-lang/crates.io-index"1355source = "registry+https://github.com/rust-lang/crates.io-index"1275checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05"1356checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a"1276dependencies = [1357dependencies = [1277 "bytes",1358 "bytes",1278 "futures-channel",1359 "futures-channel",129113721292[[package]]1373[[package]]1293name = "hyper-timeout"1374name = "hyper-timeout"1294version = "0.5.1"1375version = "0.5.2"1295source = "registry+https://github.com/rust-lang/crates.io-index"1376source = "registry+https://github.com/rust-lang/crates.io-index"1296checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793"1377checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"1297dependencies = [1378dependencies = [1298 "hyper",1379 "hyper",1299 "hyper-util",1380 "hyper-util",130413851305[[package]]1386[[package]]1306name = "hyper-util"1387name = "hyper-util"1307version = "0.1.7"1388version = "0.1.10"1308source = "registry+https://github.com/rust-lang/crates.io-index"1389source = "registry+https://github.com/rust-lang/crates.io-index"1309checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9"1390checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4"1310dependencies = [1391dependencies = [1311 "bytes",1392 "bytes",1312 "futures-channel",1393 "futures-channel",1317 "pin-project-lite",1398 "pin-project-lite",1318 "socket2",1399 "socket2",1319 "tokio",1400 "tokio",1320 "tower",1321 "tower-service",1401 "tower-service",1322 "tracing",1402 "tracing",1323]1403]132414041325[[package]]1405[[package]]1326name = "i18n-config"1406name = "i18n-config"1327version = "0.4.6"1407version = "0.4.7"1328source = "registry+https://github.com/rust-lang/crates.io-index"1408source = "registry+https://github.com/rust-lang/crates.io-index"1329checksum = "0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640"1409checksum = "8e88074831c0be5b89181b05e6748c4915f77769ecc9a4c372f88b169a8509c9"1330dependencies = [1410dependencies = [1411 "basic-toml",1331 "log",1412 "log",1332 "serde",1413 "serde",1333 "serde_derive",1414 "serde_derive",1334 "thiserror",1415 "thiserror 1.0.69",1335 "toml 0.8.13",1336 "unic-langid",1416 "unic-langid",1337]1417]133814181352 "log",1432 "log",1353 "parking_lot",1433 "parking_lot",1354 "rust-embed",1434 "rust-embed",1355 "thiserror",1435 "thiserror 1.0.69",1356 "unic-langid",1436 "unic-langid",1357 "walkdir",1437 "walkdir",1358]1438]1374 "proc-macro2",1454 "proc-macro2",1375 "quote",1455 "quote",1376 "strsim 0.10.0",1456 "strsim 0.10.0",1377 "syn 2.0.76",1457 "syn 2.0.87",1378 "unic-langid",1458 "unic-langid",1379]1459]138014601381[[package]]1461[[package]]1382name = "i18n-embed-impl"1462name = "i18n-embed-impl"1383version = "0.8.3"1463version = "0.8.4"1384source = "registry+https://github.com/rust-lang/crates.io-index"1464source = "registry+https://github.com/rust-lang/crates.io-index"1385checksum = "81093c4701672f59416582fe3145676126fd23ba5db910acad0793c1108aaa58"1465checksum = "0f2cc0e0523d1fe6fc2c6f66e5038624ea8091b3e7748b5e8e0c84b1698db6c2"1386dependencies = [1466dependencies = [1387 "find-crate",1467 "find-crate",1388 "i18n-config",1468 "i18n-config",1389 "proc-macro2",1469 "proc-macro2",1390 "quote",1470 "quote",1391 "syn 2.0.76",1471 "syn 2.0.87",1392]1472]139314731394[[package]]1474[[package]]1395name = "iana-time-zone"1475name = "iana-time-zone"1396version = "0.1.60"1476version = "0.1.61"1397source = "registry+https://github.com/rust-lang/crates.io-index"1477source = "registry+https://github.com/rust-lang/crates.io-index"1398checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"1478checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"1399dependencies = [1479dependencies = [1400 "android_system_properties",1480 "android_system_properties",1401 "core-foundation-sys",1481 "core-foundation-sys",142615061427[[package]]1507[[package]]1428name = "indexmap"1508name = "indexmap"1429version = "2.2.6"1509version = "2.6.0"1430source = "registry+https://github.com/rust-lang/crates.io-index"1510source = "registry+https://github.com/rust-lang/crates.io-index"1431checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"1511checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"1432dependencies = [1512dependencies = [1433 "equivalent",1513 "equivalent",1434 "hashbrown 0.14.5",1514 "hashbrown 0.15.1",1435]1515]143615161437[[package]]1517[[package]]1438name = "indicatif"1518name = "indicatif"1439version = "0.17.8"1519version = "0.17.9"1440source = "registry+https://github.com/rust-lang/crates.io-index"1520source = "registry+https://github.com/rust-lang/crates.io-index"1441checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"1521checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281"1442dependencies = [1522dependencies = [1443 "console",1523 "console",1444 "instant",1445 "number_prefix",1524 "number_prefix",1446 "portable-atomic",1525 "portable-atomic",1447 "unicode-width",1526 "unicode-width 0.2.0",1448 "vt100",1527 "vt100",1528 "web-time",1449]1529]145015301451[[package]]1531[[package]]1458 "generic-array",1538 "generic-array",1459]1539]14601461[[package]]1462name = "instant"1463version = "0.1.13"1464source = "registry+https://github.com/rust-lang/crates.io-index"1465checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"1466dependencies = [1467 "cfg-if",1468]146915401470[[package]]1541[[package]]1471name = "intl-memoizer"1542name = "intl-memoizer"149415651495[[package]]1566[[package]]1496name = "is-terminal"1567name = "is-terminal"1497version = "0.4.12"1568version = "0.4.13"1498source = "registry+https://github.com/rust-lang/crates.io-index"1569source = "registry+https://github.com/rust-lang/crates.io-index"1499checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b"1570checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"1500dependencies = [1571dependencies = [1501 "hermit-abi",1572 "hermit-abi 0.4.0",1502 "libc",1573 "libc",1503 "windows-sys 0.52.0",1574 "windows-sys 0.52.0",1504]1575]151115821512[[package]]1583[[package]]1513name = "is_terminal_polyfill"1584name = "is_terminal_polyfill"1514version = "1.70.0"1585version = "1.70.1"1515source = "registry+https://github.com/rust-lang/crates.io-index"1586source = "registry+https://github.com/rust-lang/crates.io-index"1516checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"1587checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"15881589[[package]]1590name = "itertools"1591version = "0.12.1"1592source = "registry+https://github.com/rust-lang/crates.io-index"1593checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"1594dependencies = [1595 "either",1596]151715971518[[package]]1598[[package]]1519name = "itertools"1599name = "itertools"153216121533[[package]]1613[[package]]1534name = "js-sys"1614name = "js-sys"1535version = "0.3.69"1615version = "0.3.72"1536source = "registry+https://github.com/rust-lang/crates.io-index"1616source = "registry+https://github.com/rust-lang/crates.io-index"1537checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"1617checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9"1538dependencies = [1618dependencies = [1539 "wasm-bindgen",1619 "wasm-bindgen",1540]1620]154116211542[[package]]1622[[package]]1543name = "lazy_static"1623name = "lazy_static"1544version = "1.4.0"1624version = "1.5.0"1545source = "registry+https://github.com/rust-lang/crates.io-index"1625source = "registry+https://github.com/rust-lang/crates.io-index"1546checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"1626checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"1547dependencies = [1627dependencies = [1548 "spin 0.5.2",1628 "spin",1549]1629]16301631[[package]]1632name = "lazycell"1633version = "1.3.0"1634source = "registry+https://github.com/rust-lang/crates.io-index"1635checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"155016361551[[package]]1637[[package]]1552name = "libc"1638name = "libc"1553version = "0.2.155"1639version = "0.2.162"1554source = "registry+https://github.com/rust-lang/crates.io-index"1640source = "registry+https://github.com/rust-lang/crates.io-index"1555checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"1641checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"16421643[[package]]1644name = "libloading"1645version = "0.8.5"1646source = "registry+https://github.com/rust-lang/crates.io-index"1647checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"1648dependencies = [1649 "cfg-if",1650 "windows-targets 0.52.6",1651]155616521557[[package]]1653[[package]]1558name = "libm"1654name = "libm"1559version = "0.2.8"1655version = "0.2.11"1560source = "registry+https://github.com/rust-lang/crates.io-index"1656source = "registry+https://github.com/rust-lang/crates.io-index"1561checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"1657checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"156216581563[[package]]1659[[package]]1564name = "libmimalloc-sys"1660name = "libmimalloc-sys"1565version = "0.1.38"1661version = "0.1.39"1566source = "registry+https://github.com/rust-lang/crates.io-index"1662source = "registry+https://github.com/rust-lang/crates.io-index"1567checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6"1663checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44"1568dependencies = [1664dependencies = [1569 "cc",1665 "cc",1570 "libc",1666 "libc",159416901595[[package]]1691[[package]]1596name = "log"1692name = "log"1597version = "0.4.21"1693version = "0.4.22"1598source = "registry+https://github.com/rust-lang/crates.io-index"1694source = "registry+https://github.com/rust-lang/crates.io-index"1599checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"1695checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"160016961601[[package]]1697[[package]]1602name = "matchers"1698name = "matchers"161517111616[[package]]1712[[package]]1617name = "memchr"1713name = "memchr"1618version = "2.7.2"1714version = "2.7.4"1619source = "registry+https://github.com/rust-lang/crates.io-index"1715source = "registry+https://github.com/rust-lang/crates.io-index"1620checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"1716checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"162117171622[[package]]1718[[package]]1623name = "memoffset"1719name = "memoffset"163017261631[[package]]1727[[package]]1632name = "mimalloc"1728name = "mimalloc"1633version = "0.1.42"1729version = "0.1.43"1634source = "registry+https://github.com/rust-lang/crates.io-index"1730source = "registry+https://github.com/rust-lang/crates.io-index"1635checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176"1731checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633"1636dependencies = [1732dependencies = [1637 "libmimalloc-sys",1733 "libmimalloc-sys",1638]1734]165117471652[[package]]1748[[package]]1653name = "miniz_oxide"1749name = "miniz_oxide"1654version = "0.7.3"1750version = "0.8.0"1655source = "registry+https://github.com/rust-lang/crates.io-index"1751source = "registry+https://github.com/rust-lang/crates.io-index"1656checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"1752checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"1657dependencies = [1753dependencies = [1658 "adler",1754 "adler2",1659]1755]166017561661[[package]]1757[[package]]1670 "windows-sys 0.48.0",1766 "windows-sys 0.48.0",1671]1767]17681769[[package]]1770name = "mio"1771version = "1.0.2"1772source = "registry+https://github.com/rust-lang/crates.io-index"1773checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec"1774dependencies = [1775 "hermit-abi 0.3.9",1776 "libc",1777 "wasi",1778 "windows-sys 0.52.0",1779]167217801673[[package]]1781[[package]]1674name = "multimap"1782name = "multimap"1695 "anyhow",1803 "anyhow",1696 "better-command",1804 "better-command",1697 "futures",1805 "futures",1698 "itertools",1806 "itertools 0.13.0",1699 "nixlike",1807 "nixlike",1700 "r2d2",1808 "r2d2",1701 "regex",1809 "regex",1702 "serde",1810 "serde",1703 "serde_json",1811 "serde_json",1704 "thiserror",1812 "thiserror 2.0.3",1705 "tokio",1813 "tokio",1706 "tokio-util",1814 "tokio-util",1707 "tracing",1815 "tracing",1708 "unindent",1816 "unindent",1709]1817]18181819[[package]]1820name = "nix-native-eval"1821version = "0.1.0"1822dependencies = [1823 "nixrs",1824]171018251711[[package]]1826[[package]]1712name = "nixlike"1827name = "nixlike"1719 "serde",1834 "serde",1720 "serde-transcode",1835 "serde-transcode",1721 "serde_json",1836 "serde_json",1722 "thiserror",1837 "thiserror 2.0.3",1723]1838]18391840[[package]]1841name = "nixrs"1842version = "0.1.0"1843source = "git+https://github.com/Anillc/nixrs#740fcf4048cc5b6de8c54d18254f12d53909a867"1844dependencies = [1845 "libc",1846 "nixrs-sys",1847 "thiserror 1.0.69",1848]18491850[[package]]1851name = "nixrs-sys"1852version = "0.1.0"1853source = "git+https://github.com/Anillc/nixrs#740fcf4048cc5b6de8c54d18254f12d53909a867"1854dependencies = [1855 "bindgen",1856 "pkg-config",1857]172418581725[[package]]1859[[package]]1726name = "nom"1860name = "nom"1795 "libm",1929 "libm",1796]1930]17971798[[package]]1799name = "num_cpus"1800version = "1.16.0"1801source = "registry+https://github.com/rust-lang/crates.io-index"1802checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"1803dependencies = [1804 "hermit-abi",1805 "libc",1806]180719311808[[package]]1932[[package]]1809name = "number_prefix"1933name = "number_prefix"181319371814[[package]]1938[[package]]1815name = "object"1939name = "object"1816version = "0.35.0"1940version = "0.36.5"1817source = "registry+https://github.com/rust-lang/crates.io-index"1941source = "registry+https://github.com/rust-lang/crates.io-index"1818checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e"1942checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"1819dependencies = [1943dependencies = [1820 "memchr",1944 "memchr",1821]1945]182219461823[[package]]1947[[package]]1824name = "once_cell"1948name = "once_cell"1825version = "1.19.0"1949version = "1.20.2"1826source = "registry+https://github.com/rust-lang/crates.io-index"1950source = "registry+https://github.com/rust-lang/crates.io-index"1827checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"1951checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"182819521829[[package]]1953[[package]]1830name = "opaque-debug"1954name = "opaque-debug"183419581835[[package]]1959[[package]]1836name = "openssh"1960name = "openssh"1837version = "0.10.4"1961version = "0.10.5"1838source = "registry+https://github.com/rust-lang/crates.io-index"1962source = "registry+https://github.com/rust-lang/crates.io-index"1839checksum = "432f4a7e4d194272876710557e6b712fc304e7b4711e2063655df1e446b4b8e3"1963checksum = "330f4b61092456dc0aaa0cf9a205d956cae07d8127a69ffeff6760a72549c77f"1840dependencies = [1964dependencies = [1841 "libc",1965 "libc",1842 "once_cell",1966 "once_cell",1843 "shell-escape",1967 "shell-escape",1844 "tempfile",1968 "tempfile",1845 "thiserror",1969 "thiserror 1.0.69",1846 "tokio",1970 "tokio",1847 "tokio-pipe",1971 "tokio-pipe",1848]1972]184919731850[[package]]1974[[package]]1851name = "openssh"1975name = "openssh"1852version = "0.11.0"1976version = "0.11.3"1853source = "registry+https://github.com/rust-lang/crates.io-index"1977source = "registry+https://github.com/rust-lang/crates.io-index"1854checksum = "0f27389e5da64700a3efb7f925e442f824f6e3d4b1c27f75e115a92ad3aecbb1"1978checksum = "b52987a10526b8daef7f1946b0aadfc214479f897ba624776327fd3beec2722c"1855dependencies = [1979dependencies = [1856 "libc",1980 "libc",1857 "once_cell",1981 "once_cell",1858 "shell-escape",1982 "shell-escape",1859 "tempfile",1983 "tempfile",1860 "thiserror",1984 "thiserror 2.0.3",1861 "tokio",1985 "tokio",1862]1986]18631987186919931870[[package]]1994[[package]]1871name = "owo-colors"1995name = "owo-colors"1872version = "4.0.0"1996version = "4.1.0"1873source = "registry+https://github.com/rust-lang/crates.io-index"1997source = "registry+https://github.com/rust-lang/crates.io-index"1874checksum = "caff54706df99d2a78a5a4e3455ff45448d81ef1bb63c22cd14052ca0e993a3f"1998checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56"1875dependencies = [1999dependencies = [1876 "supports-color",2000 "supports-color 2.1.0",2001 "supports-color 3.0.1",1877]2002]187820031879[[package]]2004[[package]]1884dependencies = [2009dependencies = [1885 "bytecount",2010 "bytecount",1886 "fnv",2011 "fnv",1887 "unicode-width",2012 "unicode-width 0.1.14",1888]2013]188920141890[[package]]2015[[package]]1907 "libc",2032 "libc",1908 "redox_syscall",2033 "redox_syscall",1909 "smallvec",2034 "smallvec",1910 "windows-targets 0.52.5",2035 "windows-targets 0.52.6",1911]2036]191220371913[[package]]2038[[package]]192820531929[[package]]2054[[package]]1930name = "peg"2055name = "peg"1931version = "0.8.3"2056version = "0.8.4"1932source = "registry+https://github.com/rust-lang/crates.io-index"2057source = "registry+https://github.com/rust-lang/crates.io-index"1933checksum = "8a625d12ad770914cbf7eff6f9314c3ef803bfe364a1b20bc36ddf56673e71e5"2058checksum = "295283b02df346d1ef66052a757869b2876ac29a6bb0ac3f5f7cd44aebe40e8f"1934dependencies = [2059dependencies = [1935 "peg-macros",2060 "peg-macros",1936 "peg-runtime",2061 "peg-runtime",1937]2062]193820631939[[package]]2064[[package]]1940name = "peg-macros"2065name = "peg-macros"1941version = "0.8.3"2066version = "0.8.4"1942source = "registry+https://github.com/rust-lang/crates.io-index"2067source = "registry+https://github.com/rust-lang/crates.io-index"1943checksum = "f241d42067ed3ab6a4fece1db720838e1418f36d868585a27931f95d6bc03582"2068checksum = "bdad6a1d9cf116a059582ce415d5f5566aabcd4008646779dab7fdc2a9a9d426"1944dependencies = [2069dependencies = [1945 "peg-runtime",2070 "peg-runtime",1946 "proc-macro2",2071 "proc-macro2",1976checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"2101checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"1977dependencies = [2102dependencies = [1978 "fixedbitset",2103 "fixedbitset",1979 "indexmap 2.2.6",2104 "indexmap 2.6.0",1980]2105]198121061982[[package]]2107[[package]]1983name = "pin-project"2108name = "pin-project"1984version = "1.1.5"2109version = "1.1.7"1985source = "registry+https://github.com/rust-lang/crates.io-index"2110source = "registry+https://github.com/rust-lang/crates.io-index"1986checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"2111checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95"1987dependencies = [2112dependencies = [1988 "pin-project-internal",2113 "pin-project-internal",1989]2114]199021151991[[package]]2116[[package]]1992name = "pin-project-internal"2117name = "pin-project-internal"1993version = "1.1.5"2118version = "1.1.7"1994source = "registry+https://github.com/rust-lang/crates.io-index"2119source = "registry+https://github.com/rust-lang/crates.io-index"1995checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"2120checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c"1996dependencies = [2121dependencies = [1997 "proc-macro2",2122 "proc-macro2",1998 "quote",2123 "quote",1999 "syn 2.0.76",2124 "syn 2.0.87",2000]2125]200121262002[[package]]2127[[package]]2003name = "pin-project-lite"2128name = "pin-project-lite"2004version = "0.2.14"2129version = "0.2.15"2005source = "registry+https://github.com/rust-lang/crates.io-index"2130source = "registry+https://github.com/rust-lang/crates.io-index"2006checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"2131checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"200721322008[[package]]2133[[package]]2009name = "pin-utils"2134name = "pin-utils"2033]2158]203421592035[[package]]2160[[package]]2036name = "platforms"2161name = "pkg-config"2037version = "3.4.0"2162version = "0.3.31"2038source = "registry+https://github.com/rust-lang/crates.io-index"2163source = "registry+https://github.com/rust-lang/crates.io-index"2039checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7"2164checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"204021652041[[package]]2166[[package]]2042name = "poly1305"2167name = "poly1305"206321882064[[package]]2189[[package]]2065name = "portable-atomic"2190name = "portable-atomic"2066version = "1.6.0"2191version = "1.9.0"2067source = "registry+https://github.com/rust-lang/crates.io-index"2192source = "registry+https://github.com/rust-lang/crates.io-index"2068checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"2193checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2"206921942070[[package]]2195[[package]]2071name = "powerfmt"2196name = "powerfmt"207522002076[[package]]2201[[package]]2077name = "ppv-lite86"2202name = "ppv-lite86"2078version = "0.2.17"2203version = "0.2.20"2079source = "registry+https://github.com/rust-lang/crates.io-index"2204source = "registry+https://github.com/rust-lang/crates.io-index"2080checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"2205checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"2206dependencies = [2207 "zerocopy",2208]208122092082[[package]]2210[[package]]2083name = "prettyplease"2211name = "prettyplease"2084version = "0.2.22"2212version = "0.2.25"2085source = "registry+https://github.com/rust-lang/crates.io-index"2213source = "registry+https://github.com/rust-lang/crates.io-index"2086checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba"2214checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"2087dependencies = [2215dependencies = [2088 "proc-macro2",2216 "proc-macro2",2089 "syn 2.0.76",2217 "syn 2.0.87",2090]2218]209122192092[[package]]2220[[package]]211522432116[[package]]2244[[package]]2117name = "proc-macro2"2245name = "proc-macro2"2118version = "1.0.84"2246version = "1.0.89"2119source = "registry+https://github.com/rust-lang/crates.io-index"2247source = "registry+https://github.com/rust-lang/crates.io-index"2120checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"2248checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"2121dependencies = [2249dependencies = [2122 "unicode-ident",2250 "unicode-ident",2123]2251]212422522125[[package]]2253[[package]]2126name = "prost"2254name = "prost"2127version = "0.13.1"2255version = "0.13.3"2128source = "registry+https://github.com/rust-lang/crates.io-index"2256source = "registry+https://github.com/rust-lang/crates.io-index"2129checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc"2257checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"2130dependencies = [2258dependencies = [2131 "bytes",2259 "bytes",2132 "prost-derive",2260 "prost-derive",2133]2261]213422622135[[package]]2263[[package]]2136name = "prost-build"2264name = "prost-build"2137version = "0.13.1"2265version = "0.13.3"2138source = "registry+https://github.com/rust-lang/crates.io-index"2266source = "registry+https://github.com/rust-lang/crates.io-index"2139checksum = "5bb182580f71dd070f88d01ce3de9f4da5021db7115d2e1c3605a754153b77c1"2267checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15"2140dependencies = [2268dependencies = [2141 "bytes",2269 "bytes",2142 "heck 0.5.0",2270 "heck 0.5.0",2143 "itertools",2271 "itertools 0.13.0",2144 "log",2272 "log",2145 "multimap",2273 "multimap",2146 "once_cell",2274 "once_cell",2149 "prost",2277 "prost",2150 "prost-types",2278 "prost-types",2151 "regex",2279 "regex",2152 "syn 2.0.76",2280 "syn 2.0.87",2153 "tempfile",2281 "tempfile",2154]2282]215522832156[[package]]2284[[package]]2157name = "prost-derive"2285name = "prost-derive"2158version = "0.13.1"2286version = "0.13.3"2159source = "registry+https://github.com/rust-lang/crates.io-index"2287source = "registry+https://github.com/rust-lang/crates.io-index"2160checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca"2288checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"2161dependencies = [2289dependencies = [2162 "anyhow",2290 "anyhow",2163 "itertools",2291 "itertools 0.13.0",2164 "proc-macro2",2292 "proc-macro2",2165 "quote",2293 "quote",2166 "syn 2.0.76",2294 "syn 2.0.87",2167]2295]216822962169[[package]]2297[[package]]2170name = "prost-types"2298name = "prost-types"2171version = "0.13.1"2299version = "0.13.3"2172source = "registry+https://github.com/rust-lang/crates.io-index"2300source = "registry+https://github.com/rust-lang/crates.io-index"2173checksum = "cee5168b05f49d4b0ca581206eb14a7b22fafd963efe729ac48eb03266e25cc2"2301checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670"2174dependencies = [2302dependencies = [2175 "prost",2303 "prost",2176]2304]217723052178[[package]]2306[[package]]2179name = "quote"2307name = "quote"2180version = "1.0.36"2308version = "1.0.37"2181source = "registry+https://github.com/rust-lang/crates.io-index"2309source = "registry+https://github.com/rust-lang/crates.io-index"2182checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"2310checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"2183dependencies = [2311dependencies = [2184 "proc-macro2",2312 "proc-macro2",2185]2313]224023682241[[package]]2369[[package]]2242name = "redox_syscall"2370name = "redox_syscall"2243version = "0.5.1"2371version = "0.5.7"2244source = "registry+https://github.com/rust-lang/crates.io-index"2372source = "registry+https://github.com/rust-lang/crates.io-index"2245checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"2373checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f"2246dependencies = [2374dependencies = [2247 "bitflags",2375 "bitflags",2248]2376]224923772250[[package]]2378[[package]]2251name = "regex"2379name = "regex"2252version = "1.10.6"2380version = "1.11.1"2253source = "registry+https://github.com/rust-lang/crates.io-index"2381source = "registry+https://github.com/rust-lang/crates.io-index"2254checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619"2382checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"2255dependencies = [2383dependencies = [2256 "aho-corasick",2384 "aho-corasick",2257 "memchr",2385 "memchr",2258 "regex-automata 0.4.6",2386 "regex-automata 0.4.9",2259 "regex-syntax 0.8.3",2387 "regex-syntax 0.8.5",2260]2388]226123892262[[package]]2390[[package]]227023982271[[package]]2399[[package]]2272name = "regex-automata"2400name = "regex-automata"2273version = "0.4.6"2401version = "0.4.9"2274source = "registry+https://github.com/rust-lang/crates.io-index"2402source = "registry+https://github.com/rust-lang/crates.io-index"2275checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"2403checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"2276dependencies = [2404dependencies = [2277 "aho-corasick",2405 "aho-corasick",2278 "memchr",2406 "memchr",2279 "regex-syntax 0.8.3",2407 "regex-syntax 0.8.5",2280]2408]228124092282[[package]]2410[[package]]228724152288[[package]]2416[[package]]2289name = "regex-syntax"2417name = "regex-syntax"2290version = "0.8.3"2418version = "0.8.5"2291source = "registry+https://github.com/rust-lang/crates.io-index"2419source = "registry+https://github.com/rust-lang/crates.io-index"2292checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"2420checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"229324212294[[package]]2422[[package]]2295name = "ring"2423name = "ring"2301 "cfg-if",2429 "cfg-if",2302 "getrandom",2430 "getrandom",2303 "libc",2431 "libc",2304 "spin 0.9.8",2432 "spin",2305 "untrusted",2433 "untrusted",2306 "windows-sys 0.52.0",2434 "windows-sys 0.52.0",2307]2435]238625142387[[package]]2515[[package]]2388name = "rust-embed"2516name = "rust-embed"2389version = "8.4.0"2517version = "8.5.0"2390source = "registry+https://github.com/rust-lang/crates.io-index"2518source = "registry+https://github.com/rust-lang/crates.io-index"2391checksum = "19549741604902eb99a7ed0ee177a0663ee1eda51a29f71401f166e47e77806a"2519checksum = "fa66af4a4fdd5e7ebc276f115e895611a34739a9c1c01028383d612d550953c0"2392dependencies = [2520dependencies = [2393 "rust-embed-impl",2521 "rust-embed-impl",2394 "rust-embed-utils",2522 "rust-embed-utils",239725252398[[package]]2526[[package]]2399name = "rust-embed-impl"2527name = "rust-embed-impl"2400version = "8.4.0"2528version = "8.5.0"2401source = "registry+https://github.com/rust-lang/crates.io-index"2529source = "registry+https://github.com/rust-lang/crates.io-index"2402checksum = "cb9f96e283ec64401f30d3df8ee2aaeb2561f34c824381efa24a35f79bf40ee4"2530checksum = "6125dbc8867951125eec87294137f4e9c2c96566e61bf72c45095a7c77761478"2403dependencies = [2531dependencies = [2404 "proc-macro2",2532 "proc-macro2",2405 "quote",2533 "quote",2406 "rust-embed-utils",2534 "rust-embed-utils",2407 "syn 2.0.76",2535 "syn 2.0.87",2408 "walkdir",2536 "walkdir",2409]2537]241025382411[[package]]2539[[package]]2412name = "rust-embed-utils"2540name = "rust-embed-utils"2413version = "8.4.0"2541version = "8.5.0"2414source = "registry+https://github.com/rust-lang/crates.io-index"2542source = "registry+https://github.com/rust-lang/crates.io-index"2415checksum = "38c74a686185620830701348de757fd36bef4aa9680fd23c49fc539ddcc1af32"2543checksum = "2e5347777e9aacb56039b0e1f28785929a8a3b709e87482e7442c72e7c12529d"2416dependencies = [2544dependencies = [2417 "sha2",2545 "sha2",2418 "walkdir",2546 "walkdir",243225602433[[package]]2561[[package]]2434name = "rustc_version"2562name = "rustc_version"2435version = "0.4.0"2563version = "0.4.1"2436source = "registry+https://github.com/rust-lang/crates.io-index"2564source = "registry+https://github.com/rust-lang/crates.io-index"2437checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"2565checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"2438dependencies = [2566dependencies = [2439 "semver",2567 "semver",2440]2568]244125692442[[package]]2570[[package]]2443name = "rustix"2571name = "rustix"2444version = "0.38.34"2572version = "0.38.40"2445source = "registry+https://github.com/rust-lang/crates.io-index"2573source = "registry+https://github.com/rust-lang/crates.io-index"2446checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"2574checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0"2447dependencies = [2575dependencies = [2448 "bitflags",2576 "bitflags",2449 "errno",2577 "errno",245425822455[[package]]2583[[package]]2456name = "rustls"2584name = "rustls"2457version = "0.23.12"2585version = "0.23.16"2458source = "registry+https://github.com/rust-lang/crates.io-index"2586source = "registry+https://github.com/rust-lang/crates.io-index"2459checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044"2587checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e"2460dependencies = [2588dependencies = [2461 "log",2589 "log",2462 "once_cell",2590 "once_cell",246925972470[[package]]2598[[package]]2471name = "rustls-pemfile"2599name = "rustls-pemfile"2472version = "2.1.3"2600version = "2.2.0"2473source = "registry+https://github.com/rust-lang/crates.io-index"2601source = "registry+https://github.com/rust-lang/crates.io-index"2474checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"2602checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"2475dependencies = [2603dependencies = [2476 "base64 0.22.1",2477 "rustls-pki-types",2604 "rustls-pki-types",2478]2605]247926062480[[package]]2607[[package]]2481name = "rustls-pki-types"2608name = "rustls-pki-types"2482version = "1.8.0"2609version = "1.10.0"2483source = "registry+https://github.com/rust-lang/crates.io-index"2610source = "registry+https://github.com/rust-lang/crates.io-index"2484checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"2611checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"248526122486[[package]]2613[[package]]2487name = "rustls-webpki"2614name = "rustls-webpki"2488version = "0.102.7"2615version = "0.102.8"2489source = "registry+https://github.com/rust-lang/crates.io-index"2616source = "registry+https://github.com/rust-lang/crates.io-index"2490checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56"2617checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"2491dependencies = [2618dependencies = [2492 "ring",2619 "ring",2493 "rustls-pki-types",2620 "rustls-pki-types",249626232497[[package]]2624[[package]]2498name = "rustversion"2625name = "rustversion"2499version = "1.0.17"2626version = "1.0.18"2500source = "registry+https://github.com/rust-lang/crates.io-index"2627source = "registry+https://github.com/rust-lang/crates.io-index"2501checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"2628checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"250226292503[[package]]2630[[package]]2504name = "ryu"2631name = "ryu"258227092583[[package]]2710[[package]]2584name = "serde"2711name = "serde"2585version = "1.0.203"2712version = "1.0.215"2586source = "registry+https://github.com/rust-lang/crates.io-index"2713source = "registry+https://github.com/rust-lang/crates.io-index"2587checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"2714checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"2588dependencies = [2715dependencies = [2589 "serde_derive",2716 "serde_derive",2590]2717]260927362610[[package]]2737[[package]]2611name = "serde_derive"2738name = "serde_derive"2612version = "1.0.203"2739version = "1.0.215"2613source = "registry+https://github.com/rust-lang/crates.io-index"2740source = "registry+https://github.com/rust-lang/crates.io-index"2614checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"2741checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"2615dependencies = [2742dependencies = [2616 "proc-macro2",2743 "proc-macro2",2617 "quote",2744 "quote",2618 "syn 2.0.76",2745 "syn 2.0.87",2619]2746]262027472621[[package]]2748[[package]]2622name = "serde_json"2749name = "serde_json"2623version = "1.0.127"2750version = "1.0.132"2624source = "registry+https://github.com/rust-lang/crates.io-index"2751source = "registry+https://github.com/rust-lang/crates.io-index"2625checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"2752checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03"2626dependencies = [2753dependencies = [2627 "itoa",2754 "itoa",2628 "memchr",2755 "memchr",2629 "ryu",2756 "ryu",2630 "serde",2757 "serde",2631]2758]26322633[[package]]2634name = "serde_spanned"2635version = "0.6.6"2636source = "registry+https://github.com/rust-lang/crates.io-index"2637checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"2638dependencies = [2639 "serde",2640]264127592642[[package]]2760[[package]]2643name = "sha2"2761name = "sha2"268328012684[[package]]2802[[package]]2685name = "signal-hook-mio"2803name = "signal-hook-mio"2686version = "0.2.3"2804version = "0.2.4"2687source = "registry+https://github.com/rust-lang/crates.io-index"2805source = "registry+https://github.com/rust-lang/crates.io-index"2688checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af"2806checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd"2689dependencies = [2807dependencies = [2690 "libc",2808 "libc",2691 "mio",2809 "mio 0.8.11",2692 "signal-hook",2810 "signal-hook",2693]2811]269428122745 "windows-sys 0.52.0",2863 "windows-sys 0.52.0",2746]2864]27472748[[package]]2749name = "spin"2750version = "0.5.2"2751source = "registry+https://github.com/rust-lang/crates.io-index"2752checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"275328652754[[package]]2866[[package]]2755name = "spin"2867name = "spin"278128932782[[package]]2894[[package]]2783name = "subtle"2895name = "subtle"2784version = "2.5.0"2896version = "2.6.1"2785source = "registry+https://github.com/rust-lang/crates.io-index"2897source = "registry+https://github.com/rust-lang/crates.io-index"2786checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"2898checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"278728992788[[package]]2900[[package]]2789name = "supports-color"2901name = "supports-color"2795 "is_ci",2907 "is_ci",2796]2908]29092910[[package]]2911name = "supports-color"2912version = "3.0.1"2913source = "registry+https://github.com/rust-lang/crates.io-index"2914checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77"2915dependencies = [2916 "is_ci",2917]279729182798[[package]]2919[[package]]2799name = "syn"2920name = "syn"280829292809[[package]]2930[[package]]2810name = "syn"2931name = "syn"2811version = "2.0.76"2932version = "2.0.87"2812source = "registry+https://github.com/rust-lang/crates.io-index"2933source = "registry+https://github.com/rust-lang/crates.io-index"2813checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"2934checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"2814dependencies = [2935dependencies = [2815 "proc-macro2",2936 "proc-macro2",2816 "quote",2937 "quote",2837dependencies = [2958dependencies = [2838 "papergrid",2959 "papergrid",2839 "tabled_derive",2960 "tabled_derive",2840 "unicode-width",2961 "unicode-width 0.1.14",2841]2962]284229632843[[package]]2964[[package]]285529762856[[package]]2977[[package]]2857name = "tempfile"2978name = "tempfile"2858version = "3.10.1"2979version = "3.14.0"2859source = "registry+https://github.com/rust-lang/crates.io-index"2980source = "registry+https://github.com/rust-lang/crates.io-index"2860checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"2981checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c"2861dependencies = [2982dependencies = [2862 "cfg-if",2983 "cfg-if",2863 "fastrand",2984 "fastrand",2985 "once_cell",2864 "rustix",2986 "rustix",2865 "windows-sys 0.52.0",2987 "windows-sys 0.59.0",2866]2988]286729892868[[package]]2990[[package]]2869name = "terminal_size"2991name = "terminal_size"2870version = "0.3.0"2992version = "0.4.0"2871source = "registry+https://github.com/rust-lang/crates.io-index"2993source = "registry+https://github.com/rust-lang/crates.io-index"2872checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"2994checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef"2873dependencies = [2995dependencies = [2874 "rustix",2996 "rustix",2875 "windows-sys 0.48.0",2997 "windows-sys 0.59.0",2876]2998]287729992878[[package]]3000[[package]]292230442923[[package]]3045[[package]]2924name = "thiserror"3046name = "thiserror"2925version = "1.0.61"3047version = "1.0.69"2926source = "registry+https://github.com/rust-lang/crates.io-index"3048source = "registry+https://github.com/rust-lang/crates.io-index"2927checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"3049checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"2928dependencies = [3050dependencies = [2929 "thiserror-impl",3051 "thiserror-impl 1.0.69",2930]3052]30533054[[package]]3055name = "thiserror"3056version = "2.0.3"3057source = "registry+https://github.com/rust-lang/crates.io-index"3058checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"3059dependencies = [3060 "thiserror-impl 2.0.3",3061]293130622932[[package]]3063[[package]]2933name = "thiserror-impl"3064name = "thiserror-impl"2934version = "1.0.61"3065version = "1.0.69"2935source = "registry+https://github.com/rust-lang/crates.io-index"3066source = "registry+https://github.com/rust-lang/crates.io-index"2936checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"3067checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"2937dependencies = [3068dependencies = [2938 "proc-macro2",3069 "proc-macro2",2939 "quote",3070 "quote",2940 "syn 2.0.76",3071 "syn 2.0.87",2941]3072]30733074[[package]]3075name = "thiserror-impl"3076version = "2.0.3"3077source = "registry+https://github.com/rust-lang/crates.io-index"3078checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"3079dependencies = [3080 "proc-macro2",3081 "quote",3082 "syn 2.0.87",3083]294230842943[[package]]3085[[package]]2944name = "thread_local"3086name = "thread_local"299131332992[[package]]3134[[package]]2993name = "tokio"3135name = "tokio"2994version = "1.38.0"3136version = "1.41.1"2995source = "registry+https://github.com/rust-lang/crates.io-index"3137source = "registry+https://github.com/rust-lang/crates.io-index"2996checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a"3138checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33"2997dependencies = [3139dependencies = [2998 "backtrace",3140 "backtrace",2999 "bytes",3141 "bytes",3000 "libc",3142 "libc",3001 "mio",3143 "mio 1.0.2",3002 "num_cpus",3003 "pin-project-lite",3144 "pin-project-lite",3004 "signal-hook-registry",3145 "signal-hook-registry",3005 "socket2",3146 "socket2",3006 "tokio-macros",3147 "tokio-macros",3007 "windows-sys 0.48.0",3148 "windows-sys 0.52.0",3008]3149]300931503010[[package]]3151[[package]]3011name = "tokio-macros"3152name = "tokio-macros"3012version = "2.3.0"3153version = "2.4.0"3013source = "registry+https://github.com/rust-lang/crates.io-index"3154source = "registry+https://github.com/rust-lang/crates.io-index"3014checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"3155checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"3015dependencies = [3156dependencies = [3016 "proc-macro2",3157 "proc-macro2",3017 "quote",3158 "quote",3018 "syn 2.0.76",3159 "syn 2.0.87",3019]3160]302031613021[[package]]3162[[package]]304131823042[[package]]3183[[package]]3043name = "tokio-stream"3184name = "tokio-stream"3044version = "0.1.15"3185version = "0.1.16"3045source = "registry+https://github.com/rust-lang/crates.io-index"3186source = "registry+https://github.com/rust-lang/crates.io-index"3046checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"3187checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1"3047dependencies = [3188dependencies = [3048 "futures-core",3189 "futures-core",3049 "pin-project-lite",3190 "pin-project-lite",305331943054[[package]]3195[[package]]3055name = "tokio-util"3196name = "tokio-util"3056version = "0.7.11"3197version = "0.7.12"3057source = "registry+https://github.com/rust-lang/crates.io-index"3198source = "registry+https://github.com/rust-lang/crates.io-index"3058checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"3199checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a"3059dependencies = [3200dependencies = [3060 "bytes",3201 "bytes",3061 "futures-core",3202 "futures-core",3073 "serde",3214 "serde",3074]3215]30753076[[package]]3077name = "toml"3078version = "0.8.13"3079source = "registry+https://github.com/rust-lang/crates.io-index"3080checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba"3081dependencies = [3082 "serde",3083 "serde_spanned",3084 "toml_datetime",3085 "toml_edit",3086]30873088[[package]]3089name = "toml_datetime"3090version = "0.6.6"3091source = "registry+https://github.com/rust-lang/crates.io-index"3092checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"3093dependencies = [3094 "serde",3095]30963097[[package]]3098name = "toml_edit"3099version = "0.22.13"3100source = "registry+https://github.com/rust-lang/crates.io-index"3101checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c"3102dependencies = [3103 "indexmap 2.2.6",3104 "serde",3105 "serde_spanned",3106 "toml_datetime",3107 "winnow",3108]310932163110[[package]]3217[[package]]3111name = "tonic"3218name = "tonic"3112version = "0.12.2"3219version = "0.12.3"3113source = "registry+https://github.com/rust-lang/crates.io-index"3220source = "registry+https://github.com/rust-lang/crates.io-index"3114checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad"3221checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"3115dependencies = [3222dependencies = [3116 "async-stream",3223 "async-stream",3117 "async-trait",3224 "async-trait",3133 "tokio",3240 "tokio",3134 "tokio-rustls",3241 "tokio-rustls",3135 "tokio-stream",3242 "tokio-stream",3136 "tower",3243 "tower 0.4.13",3137 "tower-layer",3244 "tower-layer",3138 "tower-service",3245 "tower-service",3139 "tracing",3246 "tracing",3140]3247]314132483142[[package]]3249[[package]]3143name = "tonic-build"3250name = "tonic-build"3144version = "0.12.2"3251version = "0.12.3"3145source = "registry+https://github.com/rust-lang/crates.io-index"3252source = "registry+https://github.com/rust-lang/crates.io-index"3146checksum = "fe4ee8877250136bd7e3d2331632810a4df4ea5e004656990d8d66d2f5ee8a67"3253checksum = "9557ce109ea773b399c9b9e5dca39294110b74f1f342cb347a80d1fce8c26a11"3147dependencies = [3254dependencies = [3148 "prettyplease",3255 "prettyplease",3149 "proc-macro2",3256 "proc-macro2",3150 "prost-build",3257 "prost-build",3258 "prost-types",3151 "quote",3259 "quote",3152 "syn 2.0.76",3260 "syn 2.0.87",3153]3261]315432623155[[package]]3263[[package]]3172 "tracing",3280 "tracing",3173]3281]32823283[[package]]3284name = "tower"3285version = "0.5.1"3286source = "registry+https://github.com/rust-lang/crates.io-index"3287checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"3288dependencies = [3289 "futures-core",3290 "futures-util",3291 "pin-project-lite",3292 "sync_wrapper 0.1.2",3293 "tower-layer",3294 "tower-service",3295]317432963175[[package]]3297[[package]]3176name = "tower-http"3298name = "tower-http"3220dependencies = [3342dependencies = [3221 "proc-macro2",3343 "proc-macro2",3222 "quote",3344 "quote",3223 "syn 2.0.76",3345 "syn 2.0.87",3224]3346]322533473226[[package]]3348[[package]]332934513330[[package]]3452[[package]]3331name = "unicase"3453name = "unicase"3332version = "2.7.0"3454version = "2.8.0"3333source = "registry+https://github.com/rust-lang/crates.io-index"3455source = "registry+https://github.com/rust-lang/crates.io-index"3334checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"3456checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df"3335dependencies = [3336 "version_check",3337]333834573339[[package]]3458[[package]]3340name = "unicode-ident"3459name = "unicode-ident"3341version = "1.0.12"3460version = "1.0.13"3342source = "registry+https://github.com/rust-lang/crates.io-index"3461source = "registry+https://github.com/rust-lang/crates.io-index"3343checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"3462checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"334434633345[[package]]3464[[package]]3346name = "unicode-width"3465name = "unicode-width"3347version = "0.1.12"3466version = "0.1.14"3348source = "registry+https://github.com/rust-lang/crates.io-index"3467source = "registry+https://github.com/rust-lang/crates.io-index"3349checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6"3468checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"34693470[[package]]3471name = "unicode-width"3472version = "0.2.0"3473source = "registry+https://github.com/rust-lang/crates.io-index"3474checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"335034753351[[package]]3476[[package]]3352name = "unicode_categories"3477name = "unicode_categories"337835033379[[package]]3504[[package]]3380name = "utf8parse"3505name = "utf8parse"3381version = "0.2.1"3506version = "0.2.2"3382source = "registry+https://github.com/rust-lang/crates.io-index"3507source = "registry+https://github.com/rust-lang/crates.io-index"3383checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"3508checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"338435093385[[package]]3510[[package]]3386name = "valuable"3511name = "valuable"339035153391[[package]]3516[[package]]3392name = "version_check"3517name = "version_check"3393version = "0.9.4"3518version = "0.9.5"3394source = "registry+https://github.com/rust-lang/crates.io-index"3519source = "registry+https://github.com/rust-lang/crates.io-index"3395checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"3520checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"339635213397[[package]]3522[[package]]3398name = "vt100"3523name = "vt100"3402dependencies = [3527dependencies = [3403 "itoa",3528 "itoa",3404 "log",3529 "log",3405 "unicode-width",3530 "unicode-width 0.1.14",3406 "vte",3531 "vte",3407]3532]34083533341935443420[[package]]3545[[package]]3421name = "vte_generate_state_changes"3546name = "vte_generate_state_changes"3422version = "0.1.1"3547version = "0.1.2"3423source = "registry+https://github.com/rust-lang/crates.io-index"3548source = "registry+https://github.com/rust-lang/crates.io-index"3424checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"3549checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e"3425dependencies = [3550dependencies = [3426 "proc-macro2",3551 "proc-macro2",3427 "quote",3552 "quote",345435793455[[package]]3580[[package]]3456name = "wasm-bindgen"3581name = "wasm-bindgen"3457version = "0.2.92"3582version = "0.2.95"3458source = "registry+https://github.com/rust-lang/crates.io-index"3583source = "registry+https://github.com/rust-lang/crates.io-index"3459checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"3584checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e"3460dependencies = [3585dependencies = [3461 "cfg-if",3586 "cfg-if",3587 "once_cell",3462 "wasm-bindgen-macro",3588 "wasm-bindgen-macro",3463]3589]346435903465[[package]]3591[[package]]3466name = "wasm-bindgen-backend"3592name = "wasm-bindgen-backend"3467version = "0.2.92"3593version = "0.2.95"3468source = "registry+https://github.com/rust-lang/crates.io-index"3594source = "registry+https://github.com/rust-lang/crates.io-index"3469checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"3595checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358"3470dependencies = [3596dependencies = [3471 "bumpalo",3597 "bumpalo",3472 "log",3598 "log",3473 "once_cell",3599 "once_cell",3474 "proc-macro2",3600 "proc-macro2",3475 "quote",3601 "quote",3476 "syn 2.0.76",3602 "syn 2.0.87",3477 "wasm-bindgen-shared",3603 "wasm-bindgen-shared",3478]3604]347936053480[[package]]3606[[package]]3481name = "wasm-bindgen-macro"3607name = "wasm-bindgen-macro"3482version = "0.2.92"3608version = "0.2.95"3483source = "registry+https://github.com/rust-lang/crates.io-index"3609source = "registry+https://github.com/rust-lang/crates.io-index"3484checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"3610checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56"3485dependencies = [3611dependencies = [3486 "quote",3612 "quote",3487 "wasm-bindgen-macro-support",3613 "wasm-bindgen-macro-support",3488]3614]348936153490[[package]]3616[[package]]3491name = "wasm-bindgen-macro-support"3617name = "wasm-bindgen-macro-support"3492version = "0.2.92"3618version = "0.2.95"3493source = "registry+https://github.com/rust-lang/crates.io-index"3619source = "registry+https://github.com/rust-lang/crates.io-index"3494checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"3620checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68"3495dependencies = [3621dependencies = [3496 "proc-macro2",3622 "proc-macro2",3497 "quote",3623 "quote",3498 "syn 2.0.76",3624 "syn 2.0.87",3499 "wasm-bindgen-backend",3625 "wasm-bindgen-backend",3500 "wasm-bindgen-shared",3626 "wasm-bindgen-shared",3501]3627]350236283503[[package]]3629[[package]]3504name = "wasm-bindgen-shared"3630name = "wasm-bindgen-shared"3505version = "0.2.92"3631version = "0.2.95"3506source = "registry+https://github.com/rust-lang/crates.io-index"3632source = "registry+https://github.com/rust-lang/crates.io-index"3507checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"3633checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d"36343635[[package]]3636name = "web-time"3637version = "1.1.0"3638source = "registry+https://github.com/rust-lang/crates.io-index"3639checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"3640dependencies = [3641 "js-sys",3642 "wasm-bindgen",3643]36443645[[package]]3646name = "which"3647version = "4.4.2"3648source = "registry+https://github.com/rust-lang/crates.io-index"3649checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"3650dependencies = [3651 "either",3652 "home",3653 "once_cell",3654 "rustix",3655]350836563509[[package]]3657[[package]]3510name = "winapi"3658name = "winapi"352436723525[[package]]3673[[package]]3526name = "winapi-util"3674name = "winapi-util"3527version = "0.1.8"3675version = "0.1.9"3528source = "registry+https://github.com/rust-lang/crates.io-index"3676source = "registry+https://github.com/rust-lang/crates.io-index"3529checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"3677checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"3530dependencies = [3678dependencies = [3531 "windows-sys 0.52.0",3679 "windows-sys 0.59.0",3532]3680]353336813534[[package]]3682[[package]]3544checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"3692checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"3545dependencies = [3693dependencies = [3546 "windows-core",3694 "windows-core",3547 "windows-targets 0.52.5",3695 "windows-targets 0.52.6",3548]3696]354936973550[[package]]3698[[package]]3553source = "registry+https://github.com/rust-lang/crates.io-index"3701source = "registry+https://github.com/rust-lang/crates.io-index"3554checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"3702checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"3555dependencies = [3703dependencies = [3556 "windows-targets 0.52.5",3704 "windows-targets 0.52.6",3557]3705]355837063559[[package]]3707[[package]]3571source = "registry+https://github.com/rust-lang/crates.io-index"3719source = "registry+https://github.com/rust-lang/crates.io-index"3572checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"3720checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"3573dependencies = [3721dependencies = [3574 "windows-targets 0.52.5",3722 "windows-targets 0.52.6",3575]3723]37243725[[package]]3726name = "windows-sys"3727version = "0.59.0"3728source = "registry+https://github.com/rust-lang/crates.io-index"3729checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"3730dependencies = [3731 "windows-targets 0.52.6",3732]357637333577[[package]]3734[[package]]3578name = "windows-targets"3735name = "windows-targets"359137483592[[package]]3749[[package]]3593name = "windows-targets"3750name = "windows-targets"3594version = "0.52.5"3751version = "0.52.6"3595source = "registry+https://github.com/rust-lang/crates.io-index"3752source = "registry+https://github.com/rust-lang/crates.io-index"3596checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"3753checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"3597dependencies = [3754dependencies = [3598 "windows_aarch64_gnullvm 0.52.5",3755 "windows_aarch64_gnullvm 0.52.6",3599 "windows_aarch64_msvc 0.52.5",3756 "windows_aarch64_msvc 0.52.6",3600 "windows_i686_gnu 0.52.5",3757 "windows_i686_gnu 0.52.6",3601 "windows_i686_gnullvm",3758 "windows_i686_gnullvm",3602 "windows_i686_msvc 0.52.5",3759 "windows_i686_msvc 0.52.6",3603 "windows_x86_64_gnu 0.52.5",3760 "windows_x86_64_gnu 0.52.6",3604 "windows_x86_64_gnullvm 0.52.5",3761 "windows_x86_64_gnullvm 0.52.6",3605 "windows_x86_64_msvc 0.52.5",3762 "windows_x86_64_msvc 0.52.6",3606]3763]360737643608[[package]]3765[[package]]361337703614[[package]]3771[[package]]3615name = "windows_aarch64_gnullvm"3772name = "windows_aarch64_gnullvm"3616version = "0.52.5"3773version = "0.52.6"3617source = "registry+https://github.com/rust-lang/crates.io-index"3774source = "registry+https://github.com/rust-lang/crates.io-index"3618checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"3775checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"361937763620[[package]]3777[[package]]3621name = "windows_aarch64_msvc"3778name = "windows_aarch64_msvc"362537823626[[package]]3783[[package]]3627name = "windows_aarch64_msvc"3784name = "windows_aarch64_msvc"3628version = "0.52.5"3785version = "0.52.6"3629source = "registry+https://github.com/rust-lang/crates.io-index"3786source = "registry+https://github.com/rust-lang/crates.io-index"3630checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"3787checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"363137883632[[package]]3789[[package]]3633name = "windows_i686_gnu"3790name = "windows_i686_gnu"363737943638[[package]]3795[[package]]3639name = "windows_i686_gnu"3796name = "windows_i686_gnu"3640version = "0.52.5"3797version = "0.52.6"3641source = "registry+https://github.com/rust-lang/crates.io-index"3798source = "registry+https://github.com/rust-lang/crates.io-index"3642checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"3799checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"364338003644[[package]]3801[[package]]3645name = "windows_i686_gnullvm"3802name = "windows_i686_gnullvm"3646version = "0.52.5"3803version = "0.52.6"3647source = "registry+https://github.com/rust-lang/crates.io-index"3804source = "registry+https://github.com/rust-lang/crates.io-index"3648checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"3805checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"364938063650[[package]]3807[[package]]3651name = "windows_i686_msvc"3808name = "windows_i686_msvc"365538123656[[package]]3813[[package]]3657name = "windows_i686_msvc"3814name = "windows_i686_msvc"3658version = "0.52.5"3815version = "0.52.6"3659source = "registry+https://github.com/rust-lang/crates.io-index"3816source = "registry+https://github.com/rust-lang/crates.io-index"3660checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"3817checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"366138183662[[package]]3819[[package]]3663name = "windows_x86_64_gnu"3820name = "windows_x86_64_gnu"366738243668[[package]]3825[[package]]3669name = "windows_x86_64_gnu"3826name = "windows_x86_64_gnu"3670version = "0.52.5"3827version = "0.52.6"3671source = "registry+https://github.com/rust-lang/crates.io-index"3828source = "registry+https://github.com/rust-lang/crates.io-index"3672checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"3829checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"367338303674[[package]]3831[[package]]3675name = "windows_x86_64_gnullvm"3832name = "windows_x86_64_gnullvm"367938363680[[package]]3837[[package]]3681name = "windows_x86_64_gnullvm"3838name = "windows_x86_64_gnullvm"3682version = "0.52.5"3839version = "0.52.6"3683source = "registry+https://github.com/rust-lang/crates.io-index"3840source = "registry+https://github.com/rust-lang/crates.io-index"3684checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"3841checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"368538423686[[package]]3843[[package]]3687name = "windows_x86_64_msvc"3844name = "windows_x86_64_msvc"369138483692[[package]]3849[[package]]3693name = "windows_x86_64_msvc"3850name = "windows_x86_64_msvc"3694version = "0.52.5"3851version = "0.52.6"3695source = "registry+https://github.com/rust-lang/crates.io-index"3852source = "registry+https://github.com/rust-lang/crates.io-index"3696checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"3853checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"36973698[[package]]3699name = "winnow"3700version = "0.6.9"3701source = "registry+https://github.com/rust-lang/crates.io-index"3702checksum = "86c949fede1d13936a99f14fafd3e76fd642b556dd2ce96287fbe2e0151bfac6"3703dependencies = [3704 "memchr",3705]370638543707[[package]]3855[[package]]3708name = "x25519-dalek"3856name = "x25519-dalek"3731source = "registry+https://github.com/rust-lang/crates.io-index"3879source = "registry+https://github.com/rust-lang/crates.io-index"3732checksum = "2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fc"3880checksum = "2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fc"38813882[[package]]3883name = "zerocopy"3884version = "0.7.35"3885source = "registry+https://github.com/rust-lang/crates.io-index"3886checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"3887dependencies = [3888 "byteorder",3889 "zerocopy-derive",3890]38913892[[package]]3893name = "zerocopy-derive"3894version = "0.7.35"3895source = "registry+https://github.com/rust-lang/crates.io-index"3896checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"3897dependencies = [3898 "proc-macro2",3899 "quote",3900 "syn 2.0.87",3901]373339023734[[package]]3903[[package]]3735name = "zeroize"3904name = "zeroize"3748dependencies = [3917dependencies = [3749 "proc-macro2",3918 "proc-macro2",3750 "quote",3919 "quote",3751 "syn 2.0.76",3920 "syn 2.0.87",3752]3921]37533922Cargo.tomldiffbeforeafterboth--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,12 +17,8 @@
"time",
"rt-multi-thread",
] }
-clap = { version = "4.5", features = [
- "derive",
- "env",
- "wrap_help",
- "unicode",
-] }
+tokio-util = { version = "0.7.11", features = ["codec"] }
+clap = { version = "4.5", features = ["derive", "env", "wrap_help", "unicode"] }
clap_complete = "4.5"
age = { version = "0.10", features = ["ssh"] }
anyhow = "1.0"
@@ -32,3 +28,4 @@
serde_json = "1.0"
tempfile = "3.10"
nix = { version = "0.29.0", features = ["user", "fs"] }
+thiserror = "2.0.3"
cmds/fleet/src/cmds/build_systems.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/build_systems.rs
+++ b/cmds/fleet/src/cmds/build_systems.rs
@@ -7,7 +7,7 @@
opts::FleetOpts,
};
use itertools::Itertools as _;
-use nix_eval::nix_go;
+use nix_eval::{nix_go, NixBuildBatch};
use tokio::{task::LocalSet, time::sleep};
use tracing::{error, field, info, info_span, warn, Instrument};
@@ -251,18 +251,18 @@
Ok(())
}
-async fn build_task(config: Config, host: String, build_attr: &str) -> Result<PathBuf> {
+async fn build_task(
+ config: Config,
+ host: String,
+ build_attr: &str,
+ batch: Option<NixBuildBatch>,
+) -> Result<PathBuf> {
info!("building");
let host = config.host(&host).await?;
// let action = Action::from(self.subcommand.clone());
let nixos = host.nixos_config().await?;
let drv = nix_go!(nixos.system.build[{ build_attr }]);
- let outputs = drv.build().await.inspect_err(|_| {
- if build_attr == "sdImage" {
- info!("sd-image build failed");
- info!("Make sure you have imported modulesPath/installer/sd-card/sd-image-<arch>[-installer].nix (For installer, you may want to check config)");
- }
- })?;
+ let outputs = drv.build_maybe_batch(batch).await?;
let out_output = outputs
.get("out")
.ok_or_else(|| anyhow!("system build should produce \"out\" output"))?;
@@ -296,7 +296,8 @@
// multiple hosts.
set.spawn_local(
(async move {
- let built = match build_task(config, hostname.clone(), &build_attr).await {
+ let built = match build_task(config, hostname.clone(), &build_attr, None).await
+ {
Ok(path) => path,
Err(e) => {
error!("failed to deploy host: {}", e);
@@ -324,6 +325,7 @@
pub async fn run(self, config: &Config, opts: &FleetOpts) -> Result<()> {
let hosts = config.list_hosts().await?;
let set = LocalSet::new();
+ let batch = Some(config.nix_session.new_build_batch(format!("deploy-hosts")));
for host in hosts.into_iter() {
if opts.should_skip(&host).await? {
continue;
@@ -333,17 +335,19 @@
let hostname = host.name.clone();
let local_host = config.local_host();
let opts = opts.clone();
+ let batch = batch.clone();
// FIXME: Fix repl concurrency (see build-systems)
set.spawn_local(
(async move {
- let built = match build_task(config.clone(), hostname.clone(), "toplevel").await
- {
- Ok(path) => path,
- Err(e) => {
- error!("failed to deploy host: {}", e);
- return;
- }
- };
+ let built =
+ match build_task(config.clone(), hostname.clone(), "toplevel", batch).await
+ {
+ Ok(path) => path,
+ Err(e) => {
+ error!("failed to deploy host: {}", e);
+ return;
+ }
+ };
if !opts.is_local(&hostname) {
info!("uploading system closure");
{
@@ -405,6 +409,7 @@
.instrument(span),
);
}
+ drop(batch);
set.await;
Ok(())
}
cmds/fleet/src/cmds/secrets/mod.rsdiffbeforeafterboth--- a/cmds/fleet/src/cmds/secrets/mod.rs
+++ b/cmds/fleet/src/cmds/secrets/mod.rs
@@ -231,9 +231,7 @@
let key = config.key(owner).await?;
recipients.push(key);
}
- let generators = nix_go!(mk_secret_generators(Obj {
- recipients: { recipients },
- }));
+ let generators = nix_go!(mk_secret_generators(Obj { recipients }));
let generator = nix_go!(call_package(generator)(generators));
@@ -316,7 +314,7 @@
// I don't want to make modules always responsible for additional secret data anyway,
// so it should be in derivation, and not in the secret data itself.
let generators = nix_go!(default_mk_secret_generators(Obj {
- recipients: { <Vec<String>>::new() },
+ recipients: <Vec<String>>::new(),
}));
let default_generator = nix_go!(default_call_package(generator)(generators));
crates/fleet-base/src/host.rsdiffbeforeafterboth--- a/crates/fleet-base/src/host.rs
+++ b/crates/fleet-base/src/host.rs
@@ -11,7 +11,7 @@
use anyhow::{anyhow, bail, ensure, Context, Result};
use fleet_shared::SecretData;
-use nix_eval::{nix_go, nix_go_json, util::assert_warn, Value};
+use nix_eval::{nix_go, nix_go_json, util::assert_warn, NixSession, Value};
use openssh::SessionBuilder;
use serde::de::DeserializeOwned;
use tempfile::NamedTempFile;
@@ -33,6 +33,8 @@
/// import nixpkgs {system = local};
pub default_pkgs: Value,
+
+ pub nix_session: NixSession,
}
// TODO: Make field not pub
crates/fleet-base/src/opts.rsdiffbeforeafterboth--- a/crates/fleet-base/src/opts.rs
+++ b/crates/fleet-base/src/opts.rs
@@ -173,9 +173,9 @@
let directory = current_dir()?;
let pool = NixSessionPool::new(directory.as_os_str().to_owned(), nix_args.clone()).await?;
- let root_field = pool.get().await?;
+ let nix_session = pool.get().await?;
- let builtins_field = Value::binding(root_field.clone(), "builtins").await?;
+ let builtins_field = Value::binding(nix_session.clone(), "builtins").await?;
let local_system = if self.local_system == "detect" {
nix_go_json!(builtins_field.currentSystem)
} else {
@@ -187,7 +187,7 @@
let bytes = std::fs::read_to_string(fleet_data_path)?;
let data: Mutex<FleetData> = nixlike::parse_str(&bytes)?;
- let fleet_root = Value::binding(root_field, "fleetConfigurations").await?;
+ let fleet_root = Value::binding(nix_session.clone(), "fleetConfigurations").await?;
let fleet_field = nix_go!(fleet_root.default({ data }));
let config_field = nix_go!(fleet_field.config);
@@ -200,10 +200,11 @@
let default_pkgs = nix_go!(nixpkgs(Obj {
overlays,
- system: { local_system.clone() },
+ system: local_system.clone(),
}));
Ok(Config(Arc::new(FleetConfigInternals {
+ nix_session,
directory,
data,
local_system,
crates/nix-eval/Cargo.tomldiffbeforeafterboth--- a/crates/nix-eval/Cargo.toml
+++ b/crates/nix-eval/Cargo.toml
@@ -14,9 +14,9 @@
regex = "1.10.6"
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
-thiserror = "1.0.61"
+thiserror.workspace = true
tokio = { workspace = true, features = ["process", "io-util"] }
-tokio-util = { version = "0.7.11", features = ["codec"] }
+tokio-util.workspace = true
tracing.workspace = true
unindent = "0.2.3"
crates/nix-eval/src/lib.rsdiffbeforeafterboth--- a/crates/nix-eval/src/lib.rs
+++ b/crates/nix-eval/src/lib.rs
@@ -3,12 +3,17 @@
//!
//! Current api is awful, little effort was put into this implementation.
-use std::sync::Arc;
+use std::{collections::HashMap, path::PathBuf, sync::Arc};
pub use pool::NixSessionPool;
use pool::NixSessionPoolInner;
use r2d2::PooledConnection;
pub use session::{Error, Result};
+use tokio::{
+ sync::{mpsc, oneshot},
+ task::AbortHandle,
+};
+use tracing::{info, instrument, Instrument};
pub use value::{Index, Value};
mod pool;
@@ -30,10 +35,82 @@
#[derive(Clone)]
pub struct NixSession(pub(crate) Arc<tokio::sync::Mutex<PooledConnection<NixSessionPoolInner>>>);
+struct NixBuildTask(Value, oneshot::Sender<Result<HashMap<String, PathBuf>>>);
+
+#[derive(Clone)]
+pub struct NixBuildBatch {
+ tx: mpsc::UnboundedSender<NixBuildTask>,
+}
+
+#[instrument(skip(session, values))]
+async fn build_multiple(name: String, session: NixSession, values: Vec<Value>) -> Result<()> {
+ let builtins = Value::binding(session, "builtins").await?;
+ let system = nix_go!(builtins.currentSystem);
+ let drv = nix_go!(builtins.derivation(Obj {
+ system,
+ name,
+ builder: "/bin/sh",
+ // we want nothing from this derivation, it is only used to perform multiple builds at once.
+ args: vec!["-c", "echo > $out"],
+ preferLocalBuild: true,
+ allowSubstitutes: false,
+ buildInputs: values,
+ }));
+ drv.build().await?;
+ Ok(())
+}
+
+impl NixBuildBatch {
+ fn new(name: String, session: NixSession) -> Self {
+ let (tx, mut rx) = mpsc::unbounded_channel::<NixBuildTask>();
+
+ tokio::task::spawn(async move {
+ let mut deps = vec![];
+ let mut build_data = vec![];
+ while let Some(task) = rx.recv().await {
+ build_data.push(task.0.clone());
+ deps.push(task);
+ }
+ if deps.is_empty() {
+ return;
+ }
+ match build_multiple(name, session, build_data).await {
+ Ok(_) => {
+ for NixBuildTask(v, o) in deps {
+ let _ = o.send(v.build().await);
+ }
+ }
+ Err(e) => {
+ for NixBuildTask(v, o) in deps {
+ let s = v.to_string_weak().await.expect("drv is string-like");
+ if PathBuf::from(s).exists() {
+ let _ = o.send(v.build().await);
+ } else {
+ let _ = o.send(Err(e.clone()));
+ }
+ }
+ }
+ };
+ });
+ Self { tx }
+ }
+ pub async fn submit(self, task: Value) -> Result<HashMap<String, PathBuf>> {
+ let Self { tx: task_tx } = self;
+ let (tx, rx) = oneshot::channel();
+ let _ = task_tx.send(NixBuildTask(task, tx));
+ drop(task_tx);
+ rx.await.expect("shoudn't be cancelled here")
+ }
+}
+
impl NixSession {
fn ptr_eq(a: &Self, b: &Self) -> bool {
Arc::ptr_eq(&a.0, &b.0)
}
+
+ pub fn new_build_batch(&self, name: String) -> NixBuildBatch {
+ NixBuildBatch::new(name, self.clone())
+ }
}
pub fn init_tokio() {
crates/nix-eval/src/macros.rsdiffbeforeafterboth--- a/crates/nix-eval/src/macros.rs
+++ b/crates/nix-eval/src/macros.rs
@@ -7,6 +7,55 @@
pub(crate) out: String,
used_fields: Vec<Value>,
}
+trait AttrSetValue {
+ fn to_builder(self) -> NixExprBuilder;
+}
+trait Primitive {}
+
+macro_rules! impl_primitive {
+ ($($t:ty),+) => {
+ $(
+ impl Primitive for $t {}
+ )+
+ };
+}
+impl_primitive!(String, bool, &'static str);
+
+impl<T> AttrSetValue for T
+where
+ // Limited by Primitive trait to avoid orphan rules violation with Vec<T: AttrSetValue>
+ T: Serialize + Primitive,
+{
+ fn to_builder(self) -> NixExprBuilder {
+ let serialized = nixlike::serialize(self).expect("invalid value for apply");
+ NixExprBuilder {
+ out: serialized.trim_end().to_owned(),
+ used_fields: Vec::new(),
+ }
+ }
+}
+impl AttrSetValue for Value {
+ fn to_builder(self) -> NixExprBuilder {
+ NixExprBuilder {
+ out: format!("sess_field_{}", self.session_field_id()),
+ used_fields: vec![self],
+ }
+ }
+}
+impl<T> AttrSetValue for Vec<T>
+where
+ T: AttrSetValue,
+{
+ fn to_builder(self) -> NixExprBuilder {
+ let mut builder = NixExprBuilder::list();
+ for v in self {
+ builder.list_value(NixExprBuilder::attrset_value(v));
+ }
+ builder.list_end();
+ builder
+ }
+}
+
impl NixExprBuilder {
pub fn object() -> Self {
NixExprBuilder {
@@ -14,6 +63,12 @@
used_fields: Vec::new(),
}
}
+ pub fn list() -> Self {
+ NixExprBuilder {
+ out: "[".to_owned(),
+ used_fields: Vec::new(),
+ }
+ }
pub fn string(s: &str) -> Self {
NixExprBuilder {
out: nixlike::serialize(s)
@@ -23,6 +78,9 @@
used_fields: Vec::new(),
}
}
+ pub fn attrset_value(v: impl AttrSetValue) -> Self {
+ v.to_builder()
+ }
pub fn serialized(v: impl Serialize) -> Self {
let serialized = nixlike::serialize(v).expect("invalid value for apply");
Self {
@@ -46,6 +104,13 @@
self.extend(value);
self.out.push_str("; ");
}
+ pub fn list_value(&mut self, value: Self) {
+ self.extend(value);
+ self.out.push(' ');
+ }
+ pub fn list_end(&mut self) {
+ self.out.push(']');
+ }
pub fn extend(&mut self, e: Self) {
self.out.push_str(&e.out);
@@ -80,19 +145,19 @@
#[macro_export]
macro_rules! nix_expr_inner {
//(@munch_object FIXME: value should be arbitrary nix_expr_inner input... Time to write proc-macro?
- (@obj($o:ident) $field:ident, $($tt:tt)*) => {{
+ (@obj($o:ident) $field:ident$(, $($tt:tt)*)?) => {{
$o.obj_key(
NixExprBuilder::string(stringify!($field)),
- NixExprBuilder::value($field),
+ NixExprBuilder::attrset_value($field),
);
- nix_expr_inner!(@obj($o) $($tt)*);
+ $(nix_expr_inner!(@obj($o) $($tt)*);)?
}};
- (@obj($o:ident) $field:ident: $v:block, $($tt:tt)*) => {{
+ (@obj($o:ident) $field:ident: $v:expr$(, $($tt:tt)*)?) => {{
$o.obj_key(
NixExprBuilder::string(stringify!($field)),
- NixExprBuilder::serialized(&$v),
+ NixExprBuilder::attrset_value($v),
);
- nix_expr_inner!(@obj($o) $($tt)*);
+ $(nix_expr_inner!(@obj($o) $($tt)*);)?
}};
(@obj($o:ident)) => {{}};
(Obj { $($tt:tt)* }) => {{
crates/nix-eval/src/session.rsdiffbeforeafterboth--- a/crates/nix-eval/src/session.rs
+++ b/crates/nix-eval/src/session.rs
@@ -14,7 +14,7 @@
use tokio_util::codec::{FramedRead, LinesCodec};
use tracing::{debug, error, warn, Level};
-#[derive(Error, Debug)]
+#[derive(Error, Debug, Clone)]
pub enum Error {
#[error("failed to create nix repl session: {0}")]
SessionInit(&'static str),
@@ -33,15 +33,15 @@
BuildFailed { attribute: String, error: String },
#[error("output: {0}")]
- Json(#[from] serde_json::Error),
+ Json(Arc<serde_json::Error>),
// int outputs are too specific, and should not be used,
// thus error is ok to be not informative.
#[error("int output: {0}")]
Int(ParseIntError),
#[error("pool: {0}")]
- Pool(#[from] r2d2::Error),
+ Pool(Arc<r2d2::Error>),
#[error("io: {0}")]
- Io(#[from] std::io::Error),
+ Io(Arc<std::io::Error>),
// TODO: Should be done by wrapper/in different type.
#[error("at {0}: {1}")]
@@ -50,6 +50,21 @@
#[error("error: {0}")]
NixError(String),
}
+impl From<r2d2::Error> for Error {
+ fn from(value: r2d2::Error) -> Self {
+ Self::Pool(Arc::new(value))
+ }
+}
+impl From<std::io::Error> for Error {
+ fn from(value: std::io::Error) -> Self {
+ Self::Io(Arc::new(value))
+ }
+}
+impl From<serde_json::Error> for Error {
+ fn from(value: serde_json::Error) -> Self {
+ Self::Json(Arc::new(value))
+ }
+}
impl Error {
pub(crate) fn context(self, context: String) -> Self {
Self::InContext(context, Box::new(self))
crates/nix-eval/src/value.rsdiffbeforeafterboth--- a/crates/nix-eval/src/value.rs
+++ b/crates/nix-eval/src/value.rs
@@ -3,7 +3,7 @@
use better_command::NixHandler;
use serde::{de::DeserializeOwned, Serialize};
-use crate::{macros::NixExprBuilder, nix_go, Error, NixSession, Result};
+use crate::{macros::NixExprBuilder, nix_go, Error, NixBuildBatch, NixSession, Result};
#[derive(Clone)]
pub enum Index {
@@ -230,6 +230,16 @@
let import = Self::new(self.0.session.clone(), "import").await?;
Ok(nix_go!(self | import))
}
+ pub async fn build_maybe_batch(
+ &self,
+ batch: Option<NixBuildBatch>,
+ ) -> Result<HashMap<String, PathBuf>> {
+ if let Some(batch) = batch {
+ batch.submit(self.clone()).await
+ } else {
+ self.build().await
+ }
+ }
pub async fn build(&self) -> Result<HashMap<String, PathBuf>> {
let id = self.0.value.expect("can't use build on not-value");
let query = format!(":b sess_field_{id}");
@@ -262,6 +272,20 @@
.collect();
Ok(outputs)
}
+ /// Weakly convert string-like types (derivation/path/string) to string
+ pub async fn to_string_weak(&self) -> Result<String> {
+ let id = self.0.value.expect("can't use build on not-value");
+ let query = format!("\"${{sess_field_{id}}}\"");
+ let vid: String = self
+ .0
+ .session
+ .0
+ .lock()
+ .await
+ .execute_expression_to_json(&query)
+ .await?;
+ Ok(vid)
+ }
fn attribute(&self) -> String {
if let Some(full_path) = &self.0.full_path {
crates/nix-native-eval/Cargo.tomldiffbeforeafterboth--- /dev/null
+++ b/crates/nix-native-eval/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "nix-native-eval"
+edition = "2021"
+version.workspace = true
+
+[dependencies]
+nixrs = { git = "https://github.com/Anillc/nixrs", version = "0.1.0" }
crates/nix-native-eval/src/lib.rsdiffbeforeafterboth--- /dev/null
+++ b/crates/nix-native-eval/src/lib.rs
@@ -0,0 +1,7 @@
+use nixrs::{State, Store};
+
+fn init() {
+ nixrs::init();
+ let store = Store::new("daemon")?;
+ let state = State::new(store)
+}
crates/nixlike/Cargo.tomldiffbeforeafterboth--- a/crates/nixlike/Cargo.toml
+++ b/crates/nixlike/Cargo.toml
@@ -4,11 +4,11 @@
edition = "2021"
[dependencies]
+thiserror.workspace = true
alejandra = { git = "https://github.com/kamadorueda/alejandra" }
linked-hash-map = "0.5.6"
peg = "0.8.2"
serde = "1.0.196"
-thiserror = "1.0.57"
serde_json = "1.0.113"
ron = "0.8.1"
serde-transcode = "1.1.1"
flake.lockdiffbeforeafterboth--- a/flake.lock
+++ b/flake.lock
@@ -1,17 +1,12 @@
{
"nodes": {
"crane": {
- "inputs": {
- "nixpkgs": [
- "nixpkgs"
- ]
- },
"locked": {
- "lastModified": 1721699339,
- "narHash": "sha256-UqtSwU13vpzzM6w8tGghEbA7ObM3NCDzSpz19QQo9XE=",
+ "lastModified": 1731098351,
+ "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=",
"owner": "ipetkov",
"repo": "crane",
- "rev": "0081e9c447f3b70822c142908f08ceeb436982b8",
+ "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28",
"type": "github"
},
"original": {
@@ -22,14 +17,16 @@
},
"flake-parts": {
"inputs": {
- "nixpkgs-lib": "nixpkgs-lib"
+ "nixpkgs-lib": [
+ "nixpkgs"
+ ]
},
"locked": {
- "lastModified": 1719994518,
- "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
+ "lastModified": 1730504689,
+ "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
+ "rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
@@ -40,11 +37,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1721814637,
- "narHash": "sha256-L3QkCvxeByJfW45wLkdZ9pL5h9PezOwwfx7G2sRfjiU=",
+ "lastModified": 1731514040,
+ "narHash": "sha256-4VkY8gwyR83N6MPT7ipXTOSBXpVL2Hrwh898UAR3HZ8=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "e0c444a0b8413a31df199052f5714d409dc4c1d0",
+ "rev": "155168226cb666d242306e13d7dbdaa8a76d20e1",
"type": "github"
},
"original": {
@@ -52,18 +49,6 @@
"ref": "master",
"repo": "nixpkgs",
"type": "github"
- }
- },
- "nixpkgs-lib": {
- "locked": {
- "lastModified": 1719876945,
- "narHash": "sha256-Fm2rDDs86sHy0/1jxTOKB1118Q0O3Uc7EC0iXvXKpbI=",
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz"
- },
- "original": {
- "type": "tarball",
- "url": "https://github.com/NixOS/nixpkgs/archive/5daf0514482af3f97abaefc78a6606365c9108e2.tar.gz"
}
},
"root": {
@@ -81,11 +66,11 @@
]
},
"locked": {
- "lastModified": 1721810656,
- "narHash": "sha256-33UCMmgPL+sz06+iupNkl99hcBABP56ENcxSoKqr0TY=",
+ "lastModified": 1731464916,
+ "narHash": "sha256-WZ5rpjr/wCt7yBOUsvDE2i22hYz9g8W921jlwVktRQ4=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "a6afdaab4a47d6ecf647a74968e92a51c4a18e5a",
+ "rev": "2c19bad6e881b5a154cafb7f9106879b5b356d1f",
"type": "github"
},
"original": {
flake.nixdiffbeforeafterboth--- a/flake.nix
+++ b/flake.nix
@@ -5,23 +5,16 @@
nixpkgs.url = "github:nixos/nixpkgs/master";
rust-overlay = {
url = "github:oxalica/rust-overlay";
- inputs = {
- nixpkgs.follows = "nixpkgs";
- };
+ inputs.nixpkgs.follows = "nixpkgs";
};
- flake-parts.url = "github:hercules-ci/flake-parts";
- crane = {
- url = "github:ipetkov/crane";
- inputs.nixpkgs.follows = "nixpkgs";
+ flake-parts = {
+ url = "github:hercules-ci/flake-parts";
+ inputs.nixpkgs-lib.follows = "nixpkgs";
};
+ crane.url = "github:ipetkov/crane";
};
- outputs = inputs @ {
- self,
- flake-parts,
- crane,
- ...
- }:
- flake-parts.lib.mkFlake {
+ outputs = inputs:
+ inputs.flake-parts.lib.mkFlake {
inherit inputs;
} {
flake = rec {
@@ -33,7 +26,7 @@
fleetConfiguration = throw "function-based interface is deprecated, use flake-parts syntax instead";
};
flakeModules.default = import ./lib/flakePart.nix {
- inherit crane;
+ inherit (inputs) crane;
};
flakeModule = flakeModules.default;
@@ -85,7 +78,7 @@
deployerSystem = elem system deployerSystems;
lib = pkgs.lib;
rust = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
- craneLib = (crane.mkLib pkgs).overrideToolchain rust;
+ craneLib = (inputs.crane.mkLib pkgs).overrideToolchain rust;
in {
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
@@ -132,6 +125,8 @@
openssl
bacon
nil
+ rustPlatform.bindgenHook
+ nixVersions.nix_2_22
];
env.PROTOC = "${pkgs.protobuf}/bin/protoc";
};
rust-toolchain.tomldiffbeforeafterboth--- a/rust-toolchain.toml
+++ b/rust-toolchain.toml
@@ -1,3 +1,3 @@
[toolchain]
-channel = "nightly-2024-07-08"
+channel = "nightly-2024-11-12"
components = ["rustfmt", "clippy", "rust-analyzer", "rust-src"]