2UPYCKDRMU6JEYA524SWMNQM6KYWV3ZR67DKX56BJB4BWROZAGFQC 3IQQXIMX4YJJDE2OCK72MGPQYSS4FPTVRIZRHRBYGIXPWQFWHBDQC QZ4ZAYJJGG3NWG4KB5ZDDP6JAQX2UYDQX7PRKVIMPSAOBC6U543AC MGWNH72NNBWQCVZ7HSIFSUYHC4MSKJKLQA42UIR3VM6ULF3H2TZQC F6WZWYNDIMFPVDTZC6SLW67IFJD5AKOU4SK5HMYHFCAKIJKZFQLAC GMVYDVUUDEDLO4ORMNQUSEUDH37MZC3BUAHZS2F53CWTMFAYCVUAC HYYKAYWNTJDDFH3EX24BXXJ7LC6MDHPMIXTAMFX4CD76BMAR37MQC YPPYI5MFVYIRJNEWSOFRMMLLL4QKCWV7MX2T6J5YHNPQIG5DODTQC [[package]]name = "adler32"version = "1.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"[[package]]name = "aes"version = "0.7.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"dependencies = ["cfg-if","cipher","cpufeatures 0.2.17","ctr","opaque-debug",]
name = "arrayref"version = "0.3.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"[[package]]name = "arrayvec"version = "0.7.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"[[package]]
[[package]]name = "base64"version = "0.22.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"[[package]]name = "bincode"version = "1.3.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"dependencies = ["serde",]
name = "blake3"version = "1.8.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e"dependencies = ["arrayref","arrayvec","cc","cfg-if","constant_time_eq","cpufeatures 0.3.0",][[package]]name = "block-buffer"version = "0.9.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"dependencies = ["generic-array",][[package]]name = "bs58"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"[[package]]name = "bstr"version = "1.12.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"dependencies = ["memchr","serde",][[package]]
name = "byteorder"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"[[package]]name = "bytes"version = "1.11.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"[[package]]name = "canonical-path"version = "2.0.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e6e9e01327e6c86e92ec72b1c798d4a94810f147209bbe3ffab6a86954937a6f"[[package]]
[[package]]name = "console"version = "0.15.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"dependencies = ["encode_unicode","libc","once_cell","unicode-width","windows-sys 0.59.0",][[package]]name = "constant_time_eq"version = "0.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b"[[package]]name = "cpufeatures"version = "0.2.17"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"dependencies = ["libc",][[package]]name = "cpufeatures"version = "0.3.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"dependencies = ["libc",]
[[package]]name = "crypto-mac"version = "0.11.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"dependencies = ["generic-array","subtle",][[package]]name = "ctr"version = "0.8.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"dependencies = ["cipher",][[package]]name = "curve25519-dalek"version = "3.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"dependencies = ["byteorder","digest","rand_core 0.5.1","subtle","zeroize",][[package]]name = "curve25519-dalek"version = "4.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"dependencies = ["cfg-if","cpufeatures 0.2.17","curve25519-dalek-derive","fiat-crypto","rustc_version","serde","subtle","zeroize",][[package]]name = "curve25519-dalek-derive"version = "0.1.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"dependencies = ["proc-macro2","quote","syn",][[package]]name = "data-encoding"version = "2.10.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"[[package]]name = "dialoguer"version = "0.10.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87"dependencies = ["console","shell-words","tempfile",][[package]]name = "diffs"version = "0.5.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ff116c9781d74b71b9b8958281309dd2faaeabad2f0a3df27e50bd79ce5dc805"[[package]]name = "digest"version = "0.9.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"dependencies = ["generic-array",][[package]]name = "dirs-next"version = "2.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"dependencies = ["cfg-if","dirs-sys-next",][[package]]name = "dirs-sys-next"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"dependencies = ["libc","redox_users","winapi",][[package]]name = "displaydoc"version = "0.2.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"dependencies = ["proc-macro2","quote","syn",][[package]]name = "ed25519"version = "1.5.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7"dependencies = ["serde","signature",][[package]]name = "ed25519-dalek"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d"dependencies = ["curve25519-dalek 3.2.0","ed25519","rand 0.7.3","serde","serde_bytes","sha2","zeroize",]
[[package]]name = "encode_unicode"version = "1.0.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"[[package]]name = "encoding_rs"version = "0.8.35"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"dependencies = ["cfg-if",]
[[package]]name = "form_urlencoded"version = "1.2.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"dependencies = ["percent-encoding",][[package]]name = "fs2"version = "0.4.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"dependencies = ["libc","winapi",][[package]]name = "fs4"version = "0.6.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47"dependencies = ["rustix 0.38.44","windows-sys 0.48.0",][[package]]name = "futures-channel"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"dependencies = ["futures-core","futures-sink",][[package]]name = "futures-core"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"[[package]]name = "futures-io"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"[[package]]name = "futures-sink"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"[[package]]name = "futures-task"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"[[package]]name = "futures-util"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"dependencies = ["futures-core","futures-io","futures-sink","futures-task","memchr","pin-project-lite","slab",][[package]]name = "generic-array"version = "0.14.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2"dependencies = ["typenum","version_check",][[package]]name = "getrandom"version = "0.1.16"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"dependencies = ["cfg-if","libc","wasi 0.9.0+wasi-snapshot-preview1",]
version = "0.2.17"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"dependencies = ["cfg-if","js-sys","libc","wasi 0.11.1+wasi-snapshot-preview1","wasm-bindgen",][[package]]name = "getrandom"version = "0.3.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"dependencies = ["cfg-if","libc","r-efi 5.3.0","wasip2",][[package]]name = "getrandom"
[[package]]name = "hermit-abi"version = "0.5.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"[[package]]name = "hmac"version = "0.11.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"dependencies = ["crypto-mac","digest",][[package]]name = "home"version = "0.5.12"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"dependencies = ["windows-sys 0.61.2",][[package]]name = "http"version = "1.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"dependencies = ["bytes","itoa",][[package]]name = "http-body"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"dependencies = ["bytes","http",][[package]]name = "http-body-util"version = "0.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"dependencies = ["bytes","futures-core","http","http-body","pin-project-lite",][[package]]name = "httparse"version = "1.10.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]name = "hyper"version = "1.9.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca"dependencies = ["atomic-waker","bytes","futures-channel","futures-core","http","http-body","httparse","itoa","pin-project-lite","smallvec","tokio","want",][[package]]name = "hyper-util"version = "0.1.20"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"dependencies = ["base64","bytes","futures-channel","futures-util","http","http-body","hyper","ipnet","libc","percent-encoding","pin-project-lite","socket2","tokio","tower-service","tracing",][[package]]name = "icu_collections"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"dependencies = ["displaydoc","potential_utf","utf8_iter","yoke","zerofrom","zerovec",][[package]]name = "icu_locale_core"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"dependencies = ["displaydoc","litemap","tinystr","writeable","zerovec",][[package]]name = "icu_normalizer"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"dependencies = ["icu_collections","icu_normalizer_data","icu_properties","icu_provider","smallvec","zerovec",][[package]]name = "icu_normalizer_data"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"[[package]]name = "icu_properties"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"dependencies = ["icu_collections","icu_locale_core","icu_properties_data","icu_provider","zerotrie","zerovec",][[package]]name = "icu_properties_data"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"[[package]]name = "icu_provider"version = "2.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"dependencies = ["displaydoc","icu_locale_core","writeable","yoke","zerofrom","zerotrie","zerovec",]
[[package]]name = "idna"version = "1.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"dependencies = ["idna_adapter","smallvec","utf8_iter",][[package]]name = "idna_adapter"version = "1.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"dependencies = ["icu_normalizer","icu_properties",][[package]]name = "ignore"version = "0.4.25"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"dependencies = ["crossbeam-deque","globset","log","memchr","regex-automata","same-file","walkdir","winapi-util",]
name = "ipnet"version = "2.12.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"[[package]]name = "iri-string"version = "0.7.12"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20"dependencies = ["memchr","serde",][[package]]
[[package]]name = "jiff"version = "0.2.23"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359"dependencies = ["jiff-static","jiff-tzdb-platform","log","portable-atomic","portable-atomic-util","serde_core","windows-sys 0.61.2",][[package]]name = "jiff-static"version = "0.2.23"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4"dependencies = ["proc-macro2","quote","syn",][[package]]name = "jiff-tzdb"version = "0.1.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076"
[[package]]name = "libpijul"version = "1.0.0-beta.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f625e90234ef1fd164dfe7980ffb04a3036a08e31e051cc29e6273a0c9a7a7e7"dependencies = ["adler32","aes","bincode","bitflags 2.11.0","blake3","bs58","byteorder","canonical-path","chardetng","crossbeam-deque","curve25519-dalek 4.1.3","data-encoding","diffs","ed25519-dalek","encoding_rs","generic-array","getrandom 0.2.17","hmac","ignore","imara-diff","jiff","log","lru-cache","nom","parking_lot 0.12.5","path-slash","pbkdf2","pijul-macros","rand 0.9.2","regex","sanakirja 2.0.0-beta","serde","serde_derive","serde_json","sha2","tempfile","thiserror 2.0.18","toml 0.8.23","twox-hash","zstd-seekable",]
name = "libredox"version = "0.1.15"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08"dependencies = ["bitflags 2.11.0","libc","plain","redox_syscall 0.7.3",][[package]]name = "linked-hash-map"version = "0.5.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"[[package]]
name = "litemap"version = "0.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"[[package]]name = "lock_api"version = "0.4.14"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"dependencies = ["scopeguard",][[package]]
[[package]]name = "memmap2"version = "0.9.10"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"dependencies = ["libc",][[package]]name = "minimal-lexical"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"[[package]]name = "mio"version = "1.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"dependencies = ["libc","wasi 0.11.1+wasi-snapshot-preview1","windows-sys 0.61.2",]
dependencies = ["libc","winapi",][[package]]name = "parking_lot"version = "0.11.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"dependencies = ["instant","lock_api","parking_lot_core 0.8.6",][[package]]name = "parking_lot"version = "0.12.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
name = "parking_lot_core"version = "0.9.12"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"dependencies = ["cfg-if","libc","redox_syscall 0.5.18","smallvec","windows-link",][[package]]name = "path-slash"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"[[package]]name = "pbkdf2"version = "0.9.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f05894bce6a1ba4be299d0c5f29563e08af2bc18bb7d48313113bed71e904739"dependencies = ["crypto-mac",][[package]]name = "percent-encoding"version = "2.3.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"[[package]]name = "pijul-config"version = "0.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "987a7a1ff83d4abbe13a80d7f844a34eaa231cfed2b5a233ca0452c13d66ada7"dependencies = ["anyhow","dialoguer","dirs-next","edit","log","serde","serde_derive","toml 0.5.11","whoami",][[package]]name = "pijul-macros"version = "1.0.0-beta.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a794a27eb67b7ae7f940c4b94e186a58a525f87d11de1c1a0e317c9b7aafb163"dependencies = ["proc-macro2","quote","syn",][[package]]name = "pijul-repository"version = "0.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0447558711ec4c325e0fe2217867fc2c9c907725a31a095dbf8157055a34741b"dependencies = ["anyhow","libpijul","log","pijul-config","rlimit","toml 0.7.8",][[package]]
name = "pkg-config"version = "0.3.32"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"[[package]]name = "plain"version = "0.2.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"[[package]]
][[package]]name = "portable-atomic"version = "1.13.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"[[package]]name = "portable-atomic-util"version = "0.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3"dependencies = ["portable-atomic",][[package]]name = "potential_utf"version = "0.1.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"dependencies = ["zerovec",
[[package]]name = "rand"version = "0.7.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"dependencies = ["getrandom 0.1.16","libc","rand_chacha 0.2.2","rand_core 0.5.1","rand_hc",][[package]]name = "rand"version = "0.8.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"dependencies = ["libc","rand_chacha 0.3.1","rand_core 0.6.4",][[package]]name = "rand"version = "0.9.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"dependencies = ["rand_chacha 0.9.0","rand_core 0.9.5",][[package]]name = "rand_chacha"version = "0.2.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"dependencies = ["ppv-lite86","rand_core 0.5.1",][[package]]name = "rand_chacha"version = "0.3.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"dependencies = ["ppv-lite86","rand_core 0.6.4",][[package]]name = "rand_chacha"version = "0.9.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"dependencies = ["ppv-lite86","rand_core 0.9.5",][[package]]name = "rand_core"version = "0.5.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"dependencies = ["getrandom 0.1.16",][[package]]name = "rand_core"version = "0.6.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"dependencies = ["getrandom 0.2.17",][[package]]name = "rand_core"version = "0.9.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"dependencies = ["getrandom 0.3.4",][[package]]name = "rand_hc"version = "0.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"dependencies = ["rand_core 0.5.1",]
][[package]]name = "redox_syscall"version = "0.2.16"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"dependencies = ["bitflags 1.3.2",][[package]]name = "redox_syscall"version = "0.5.18"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"dependencies = ["bitflags 2.11.0",
name = "redox_syscall"version = "0.7.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16"dependencies = ["bitflags 2.11.0",][[package]]name = "redox_users"version = "0.4.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"dependencies = ["getrandom 0.2.17","libredox","thiserror 1.0.69",][[package]]
[[package]]name = "reqwest"version = "0.13.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"dependencies = ["base64","bytes","futures-channel","futures-core","futures-util","http","http-body","http-body-util","hyper","hyper-util","js-sys","log","percent-encoding","pin-project-lite","serde","serde_urlencoded","sync_wrapper","tokio","tower","tower-http","tower-service","url","wasm-bindgen","wasm-bindgen-futures","web-sys",][[package]]name = "rlimit"version = "0.9.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f8a29d87a652dc4d43c586328706bb5cdff211f3f39a530f240b53f7221dab8e"dependencies = ["libc",][[package]]name = "rustc_version"version = "0.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"dependencies = ["semver",][[package]]name = "rustix"version = "0.38.44"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"dependencies = ["bitflags 2.11.0","errno","libc","linux-raw-sys 0.4.15","windows-sys 0.59.0",]
][[package]]name = "sanakirja"version = "1.4.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "81aaf70d064e2122209f04d01fd91e8908e7a327b516236e1cbc0c3f34ac6d11"dependencies = ["fs2","log","memmap2","parking_lot 0.11.2","sanakirja-core 1.4.1","serde","thiserror 1.0.69",][[package]]name = "sanakirja"version = "2.0.0-beta"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4fc53a1e7a19d27c070749c0d2717427d1612c9b100274b205dbb438e605e34a"dependencies = ["crc32fast","fs4","lazy_static","libc","log","memmap2","parking_lot 0.11.2","sanakirja-core 2.0.0-beta","serde","thiserror 1.0.69",][[package]]name = "sanakirja-core"version = "1.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8376db34ae3eac6e7bd91168bc638450073b708ce9fb46940de676f552238bf5"[[package]]name = "sanakirja-core"version = "2.0.0-beta"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "48a8500bcb79fe605b1433c30e8c5c078810b24dc4d04ffda35e88d712ff16f0"dependencies = ["crc32fast",
name = "serde_urlencoded"version = "0.7.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"dependencies = ["form_urlencoded","itoa","ryu","serde",][[package]]name = "sha2"version = "0.9.9"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"dependencies = ["block-buffer","cfg-if","cpufeatures 0.2.17","digest","opaque-debug",][[package]]name = "shell-words"version = "1.1.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77"[[package]]
[[package]]name = "signature"version = "1.6.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"[[package]]name = "slab"version = "0.4.12"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"[[package]]name = "smallvec"version = "1.15.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"[[package]]name = "socket2"version = "0.6.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"dependencies = ["libc","windows-sys 0.61.2",][[package]]name = "stable_deref_trait"version = "1.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
name = "static_assertions"version = "1.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"[[package]]name = "subtle"version = "2.6.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"[[package]]
"rustix","windows-sys",
"rustix 1.1.4","windows-sys 0.61.2",][[package]]name = "thiserror"version = "1.0.69"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"dependencies = ["thiserror-impl 1.0.69",][[package]]name = "thiserror"version = "2.0.18"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"dependencies = ["thiserror-impl 2.0.18",][[package]]name = "thiserror-impl"version = "1.0.69"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"dependencies = ["proc-macro2","quote","syn",][[package]]name = "thiserror-impl"version = "2.0.18"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"dependencies = ["proc-macro2","quote","syn",][[package]]name = "threadpool"version = "1.8.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"dependencies = ["num_cpus",
name = "tokio"version = "1.51.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd"dependencies = ["libc","mio","pin-project-lite","socket2","windows-sys 0.61.2",][[package]]name = "toml"version = "0.5.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"dependencies = ["indexmap 1.9.3","serde",][[package]]name = "toml"version = "0.7.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"dependencies = ["indexmap 2.13.1","serde","serde_spanned","toml_datetime","toml_edit 0.19.15",][[package]]name = "toml"version = "0.8.23"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"dependencies = ["indexmap 2.13.1","serde","serde_spanned","toml_datetime","toml_edit 0.22.27",][[package]]name = "toml_datetime"version = "0.6.11"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"dependencies = ["serde",][[package]]name = "toml_edit"version = "0.19.15"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"dependencies = ["indexmap 2.13.1","serde","serde_spanned","toml_datetime","winnow 0.5.40",][[package]]name = "toml_edit"version = "0.22.27"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"dependencies = ["indexmap 2.13.1","serde","serde_spanned","toml_datetime","toml_write","winnow 0.7.15",][[package]]name = "toml_write"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"[[package]]name = "tower"version = "0.5.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"dependencies = ["futures-core","futures-util","pin-project-lite","sync_wrapper","tokio","tower-layer","tower-service",][[package]]name = "tower-http"version = "0.6.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"dependencies = ["bitflags 2.11.0","bytes","futures-util","http","http-body","iri-string","pin-project-lite","tower","tower-layer","tower-service",][[package]]name = "tower-layer"version = "0.3.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"[[package]]name = "tower-service"version = "0.3.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"[[package]]name = "tracing"version = "0.1.44"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"dependencies = ["pin-project-lite","tracing-core",][[package]]name = "tracing-core"version = "0.1.36"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"dependencies = ["once_cell",][[package]]name = "try-lock"version = "0.2.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"[[package]]name = "twox-hash"version = "1.6.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"dependencies = ["cfg-if","rand 0.8.5","static_assertions",][[package]]name = "typenum"version = "1.19.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"[[package]]
[[package]]name = "url"version = "2.5.8"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"dependencies = ["form_urlencoded","idna","percent-encoding","serde",][[package]]name = "utf8_iter"version = "1.0.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"[[package]]name = "version_check"version = "0.9.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
name = "want"version = "0.3.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"dependencies = ["try-lock",][[package]]name = "wasi"version = "0.9.0+wasi-snapshot-preview1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"[[package]]name = "wasi"version = "0.11.1+wasi-snapshot-preview1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"[[package]]
name = "which"version = "4.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"dependencies = ["either","home","once_cell","rustix 0.38.44",][[package]]name = "whoami"version = "1.6.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d"dependencies = ["libredox","wasite",][[package]]
][[package]]name = "windows-targets"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"dependencies = ["windows_aarch64_gnullvm 0.48.5","windows_aarch64_msvc 0.48.5","windows_i686_gnu 0.48.5","windows_i686_msvc 0.48.5","windows_x86_64_gnu 0.48.5","windows_x86_64_gnullvm 0.48.5","windows_x86_64_msvc 0.48.5",][[package]]name = "windows-targets"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"dependencies = ["windows_aarch64_gnullvm 0.52.6","windows_aarch64_msvc 0.52.6","windows_i686_gnu 0.52.6","windows_i686_gnullvm","windows_i686_msvc 0.52.6","windows_x86_64_gnu 0.52.6","windows_x86_64_gnullvm 0.52.6","windows_x86_64_msvc 0.52.6",
[[package]]name = "windows_aarch64_gnullvm"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"[[package]]name = "windows_aarch64_gnullvm"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"[[package]]name = "windows_aarch64_msvc"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
name = "windows_aarch64_msvc"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"[[package]]name = "windows_i686_gnu"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"[[package]]name = "windows_i686_gnu"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"[[package]]name = "windows_i686_gnullvm"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"[[package]]name = "windows_i686_msvc"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"[[package]]name = "windows_i686_msvc"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"[[package]]name = "windows_x86_64_gnu"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"[[package]]name = "windows_x86_64_gnu"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"[[package]]name = "windows_x86_64_gnullvm"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"[[package]]name = "windows_x86_64_gnullvm"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"[[package]]name = "windows_x86_64_msvc"version = "0.48.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"[[package]]name = "windows_x86_64_msvc"version = "0.52.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"[[package]]name = "winnow"version = "0.5.40"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"dependencies = ["memchr",][[package]]name = "winnow"version = "0.7.15"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"dependencies = ["memchr",][[package]]
][[package]]name = "writeable"version = "0.6.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"[[package]]name = "yoke"version = "0.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"dependencies = ["stable_deref_trait","yoke-derive","zerofrom",
dependencies = ["proc-macro2","quote","syn",][[package]]name = "zerofrom"version = "0.1.7"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"dependencies = ["zerofrom-derive",][[package]]name = "zerofrom-derive"version = "0.1.7"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"dependencies = ["proc-macro2","quote","syn","synstructure",][[package]]name = "zeroize"version = "1.8.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"dependencies = ["zeroize_derive",][[package]]name = "zeroize_derive"version = "1.4.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e"
name = "zerotrie"version = "0.2.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"dependencies = ["displaydoc","yoke","zerofrom",][[package]]name = "zerovec"version = "0.11.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"dependencies = ["yoke","zerofrom","zerovec-derive",][[package]]name = "zerovec-derive"version = "0.11.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"dependencies = ["proc-macro2","quote","syn",][[package]]
[[package]]name = "zstd-seekable"version = "0.1.23"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "574a117c5cdb88d1f13381ee3a19a6a45fb6ca0c98436d3a95df852b7ca6c3c2"dependencies = ["bincode","cc","libc","pkg-config","serde","serde_derive","thiserror 1.0.69","threadpool",]
use std::process::{Child, Command, Stdio};use anyhow::{Context, Result};use crate::support::RepoFixture;pub struct TestServer {process: Child,port: u16,_repo: RepoFixture,}impl TestServer {pub fn start(repo: RepoFixture) -> Result<Self> {let port = std::env::var("PIJUL_SRV_PORT").ok().and_then(|p| p.parse().ok()).unwrap_or(8080);let server_bin = env!("CARGO_BIN_EXE_main");let mut cmd = Command::new(server_bin);cmd.current_dir(repo.repo_root()).env("PIJUL_SRV_PORT", port.to_string()).env("PIJUL_SRV_REPO_DIR", repo.repo_root()).env("RUST_BACKTRACE", "1").stdout(Stdio::piped()).stderr(Stdio::piped());repo.apply_env(&mut cmd);let process = cmd.spawn().context("failed to start server")?;Ok(Self {process,port,_repo: repo,})}pub fn base_url(&self) -> String {format!("http://127.0.0.1:{}", self.port)}}impl Drop for TestServer {fn drop(&mut self) {let _ = self.process.kill();let _ = self.process.wait();}}
use std::fs;use std::path::{Path, PathBuf};use anyhow::{Context, Result};use pijul_repository::Repository;use tempfile::TempDir;const IDENTITY_TOML: &str = include_str!("fixtures/identity.toml");const SECRET_KEY_JSON: &str = include_str!("fixtures/secret_key.json");/// E2E fixture:/// - owns a temp directory/// - creates an on-disk Pijul identity under .config/pijul/identities/<name>/// - initializes a repository with pijul_repository::Repository::init////// This is intended to replace:/// - ad hoc identity file literals/// - `pijul init` shelling out////// It does NOT yet record commits/history. For endpoint smoke tests that only/// need a valid repo and pristine DB, this is enough. If you later need history,/// add a second layer on top of this fixture.pub struct RepoFixture {temp_dir: TempDir,identity_name: String,}impl RepoFixture {pub fn new() -> Result<Self> {let temp_dir = TempDir::new().context("failed to create temp dir")?;let fixture = Self {temp_dir,identity_name: "test".to_string(),};fixture.prepare_dirs()?;fixture.write_identity_files()?;fixture.init_repo()?;Ok(fixture)}pub fn path(&self) -> &Path {self.temp_dir.path()}pub fn repo_root(&self) -> &Path {self.temp_dir.path()}pub fn home_dir(&self) -> &Path {self.temp_dir.path()}pub fn xdg_config_home(&self) -> PathBuf {self.temp_dir.path().join(".config")}pub fn xdg_data_home(&self) -> PathBuf {self.temp_dir.path().join(".local").join("share")}pub fn identity_dir(&self) -> PathBuf {self.xdg_config_home().join("pijul").join("identities").join(&self.identity_name)}pub fn pristine_db_path(&self) -> PathBuf {self.repo_root().join(".pijul").join("pristine").join("db")}/// Environment variables to pass to the server process in e2e tests.pub fn apply_env(&self, cmd: &mut std::process::Command) {cmd.env("HOME", self.home_dir()).env("XDG_CONFIG_HOME", self.xdg_config_home()).env("XDG_DATA_HOME", self.xdg_data_home());}pub fn write_file(&self, rel: &str, contents: &str) -> Result<()> {let path = self.repo_root().join(rel);if let Some(parent) = path.parent() {fs::create_dir_all(parent).with_context(|| format!("failed to create parent dirs for {}", path.display()))?;}fs::write(&path, contents).with_context(|| format!("failed to write {}", path.display()))?;Ok(())}fn prepare_dirs(&self) -> Result<()> {fs::create_dir_all(self.identity_dir()).with_context(|| format!("failed to create {}", self.identity_dir().display()))?;fs::create_dir_all(self.xdg_data_home().join("pijul")).with_context(|| {format!("failed to create {}",self.xdg_data_home().join("pijul").display())})?;Ok(())}fn write_identity_files(&self) -> Result<()> {let identity_toml_path = self.identity_dir().join("identity.toml");let secret_key_json_path = self.identity_dir().join("secret_key.json");fs::write(&identity_toml_path, IDENTITY_TOML).with_context(|| format!("failed to write {}", identity_toml_path.display()))?;fs::write(&secret_key_json_path, SECRET_KEY_JSON).with_context(|| format!("failed to write {}", secret_key_json_path.display()))?;Ok(())}fn init_repo(&self) -> Result<()> {Repository::init(Some(self.repo_root().to_path_buf()), None, None).context("failed to initialize repository")?;anyhow::ensure!(self.pristine_db_path().exists(),"expected pristine db at {}",self.pristine_db_path().display());Ok(())}}
pub mod repo_fixture;pub mod test_server;pub use crate::support::repo_fixture::RepoFixture;pub use crate::support::test_server::TestServer;
{"version": 0,"algorithm": "Ed25519","key": "2Hkt5BzQVu6CBdVCNS3oBTSJ9oePTYi593JjYjwTFxtCtq5raiWDmRE5GaEfi67129eZUZ611TZJq9f5F4panW5r"}
display_name = "test"last_modified = "2026-04-02T12:19:33.977592978Z"[public_key]version = 0algorithm = "Ed25519"signature = "2xq2dc1ND3QQDc3X4ZH98Fpjqw6kHso5hA11NzYybneoH67FjiKQ4rLpZU8hqR9V1HT3XzxQhTUnGYNAA6RQTwKa"key = "6RxzKTbkxE826peAFsr18rsBSDiokzsVk8wsXCz9gtk"
//! End-to-end integration tests for pijul-srv-lite.mod support;use anyhow::Result;use reqwest::blocking::get;use reqwest::blocking::Client;use crate::support::RepoFixture;use crate::support::TestServer;#[test]fn serves_response_for_library_initialized_repo() -> Result<()> {let repo = RepoFixture::new().expect("failed to create repo fixture");let server = TestServer::start(repo).expect("failed to start server");let resp = get(&format!("{}/.pijul", server.base_url()))?;assert_eq!(resp.status(), 404);assert_eq!(resp.text()?, "No command specified\n");Ok(())}#[test]fn test_all_endpoints() -> Result<()> {let repo = RepoFixture::new()?;let server = TestServer::start(repo)?;let url = format!("{}/.pijul", server.base_url());let client = &Client::builder().user_agent("pijul-1.0.0-beta9").build()?;// identities{let resp = client.get(&url).query(&[("identities", "")]).send()?;assert_eq!(resp.status(), 200);assert!(resp.headers().get("Content-Type").is_some_and(|t| t == "application/json"));let body = resp.text()?;assert_eq!(body, r#"{"id":[],"rev":0}"#);}Ok(())}