file addition: repoman (d--r------)
file addition: mod.rs (----------)
+ use std::path::PathBuf;
+
+ pub struct RepoMan {
+ pub storage_root: PathBuf,
+ }
+
+ pub fn new(root: String) -> RepoMan {
+ RepoMan {
+ storage_root: PathBuf::from(root),
+ }
+ }
edit in src/projects.rs at line 2
− use crate::models::projects::Project;
edit in src/projects.rs at line 35
+
+ use crate::models::projects;
replacement in src/projects.rs at line 43
[4.1565]→[4.1565:1736](∅→∅) − let proj = Project {
− id: -1,
− owner_id: 1, // TODO replace this with user
− name: project.name.clone(),
− };
−
− match proj.create(db).await {
+ // TODO replace this with user
+ match projects::create(db, 1, project.name.clone()).await {
file addition: pijul.rs (----------)
+ use crate::database::Database;
+ use crate::models::projects;
+ use crate::repoman::RepoMan;
+ use rocket::{Route, State};
+
+ #[derive(FromForm)]
+ struct ChangelistReq {
+ channel: String, // TODO check if this breaks non-UTF-8 channels
+ id: Option<String>,
+ }
+
+ // TODO is this for push and/or pull???
+ #[get("/<org_path>/<proj_path>/.pijul?<cl_req..>")]
+ async fn changelist(
+ db: &State<Database>,
+ repoman: &State<RepoMan>,
+ org_path: String,
+ proj_path: String,
+ cl_req: ChangelistReq,
+ ) -> Option<String> {
+ let p = match projects::find(db, org_path, proj_path).await {
+ Some(p) => p,
+ None => return None,
+ };
+
+ match p.repository(&repoman.storage_root) {
+ Ok(r) => r.channel_remote_id(cl_req.channel),
+ Err(e) => {
+ println!("{}", e);
+ None
+ }
+ }
+ // - Reverse engineer the rest of Push
+ }
+
+ pub fn routes() -> Vec<Route> {
+ routes![changelist]
+ }
replacement in src/models/projects.rs at line 4
[4.3512]→[4.3512:3529](∅→∅) edit in src/models/projects.rs at line 12
+ repository_uuid: uuid::Uuid, // Used for the repository path
edit in src/models/projects.rs at line 14
+
+ pub async fn find(db: &State<Database>, org_path: String, proj_path: String) -> Option<Project> {
+ let result = sqlx::query_as!(Project,
+ "SELECT * FROM projects WHERE name = $1 AND owner_id = (SELECT id FROM users WHERE name = $2)",
+ proj_path, org_path).fetch_optional(&**db)
+ .await.ok()?;
+
+ result
+ }
+
+ pub async fn create(
+ db: &State<Database>,
+ owner_id: i32,
+ name: String,
+ ) -> Result<Project, sqlx::Error> {
+ let result = query_as!(
+ Project,
+ "INSERT INTO projects (owner_id, name) VALUES ($1, $2) RETURNING *",
+ owner_id,
+ name.to_lowercase(),
+ )
+ .fetch_one(&**db)
+ .await?;
edit in src/models/projects.rs at line 38
+ Ok(result)
+ }
+
+ use crate::models::pijul::repositories::Repository;
+ use anyhow::Result;
+ use std::path::PathBuf;
+
replacement in src/models/projects.rs at line 46
[4.3728]→[4.3728:4042](∅→∅) − pub async fn create(&self, db: &State<Database>) -> Result<i32, sqlx::Error> {
− let result = query!(
− "INSERT INTO projects (owner_id, name) VALUES ($1, $2) RETURNING id",
− &self.owner_id,
− &self.name.to_lowercase(),
− )
− .fetch_one(&**db)
− .await?;
+ pub fn repository(&self, root: &PathBuf) -> Result<Repository> {
+ Ok(Repository::init_or_open(root, self.repo_path())?)
+ }
replacement in src/models/projects.rs at line 50
[4.4043]→[4.4043:4065](∅→∅) + fn repo_path(&self) -> std::path::PathBuf {
+ self.repository_uuid
+ .to_hyphenated()
+ .to_string()
+ .split("-")
+ .collect()
file addition: pijul (d--r------)
file addition: repositories.rs (----------)
+ use std::path::PathBuf;
+
+ use libpijul::pristine::sanakirja::Pristine;
+ use libpijul::MutTxnT;
+ use libpijul::TxnT;
+
+ use anyhow::bail;
+
+ pub struct Repository {
+ /// full_path is the fully qualified path on disk
+ full_path: PathBuf,
+ }
+
+ const DEFAULT_CHANNEL: &str = "main";
+ const PRISTINE_DIR: &str = "pristine";
+
+ impl Repository {
+ fn pristine_dir(&self) -> PathBuf {
+ self.full_path.join(PRISTINE_DIR)
+ }
+
+ fn pristine(&self) -> Result<Pristine, anyhow::Error> {
+ // TODO error should be logged, or handled somehow, not like this
+ match Pristine::new(self.pristine_dir().join("db")) {
+ Ok(p) => Ok(p),
+ Err(e) => bail!("Failed to open pristine: {}", e),
+ }
+ }
+
+ fn new(full_path: PathBuf) -> Repository {
+ Repository {
+ full_path: full_path,
+ }
+ }
+
+ // init returns an error if there's already something on disk
+ fn init(&self) -> Result<(), anyhow::Error> {
+ if std::fs::metadata(self.pristine_dir()).is_err() {
+ std::fs::create_dir_all(self.pristine_dir())?;
+ } else {
+ bail!("Already a repository on disk")
+ }
+
+ // TODO why the f does libpijul do this? It's properly weird even small
+ // actions can just create their own txn
+ let mut txn = self.pristine()?.mut_txn_begin()?;
+
+ txn.open_or_create_channel(DEFAULT_CHANNEL)?;
+ txn.set_current_channel(DEFAULT_CHANNEL)?;
+ txn.commit()?;
+
+ Ok(())
+ }
+
+ pub fn init_or_open(root: &PathBuf, repo_path: PathBuf) -> Result<Self, anyhow::Error> {
+ let repo = Self::new(root.join(repo_path));
+
+ // If the pristine can't be construsted, assume nothing is on disk
+ // TODO make a proper is_valid();
+ match repo.pristine() {
+ Ok(_) => Ok(repo),
+ Err(e) => {
+ println!("{}", e);
+ repo.init()?;
+ Ok(repo)
+ }
+ }
+ }
+
+ pub fn channel_remote_id(&self, channel: String) -> Option<String> {
+ let txn = match self.pristine().ok()?.mut_txn_begin() {
+ Err(_) => return None,
+ Ok(txn) => txn,
+ };
+ // TODO validate the txn needs closing?
+ //
+ // Or does the drop function do that?
+ //
+ let chan = match txn.load_channel(&channel) {
+ Ok(c) => c,
+ Err(_) => None,
+ };
+
+ match chan {
+ Some(c) => Some(c.read().id.to_string()),
+ None => {
+ println!("No chan found");
+ None
+ }
+ }
+ }
+ }
file addition: mod.rs (----------)
edit in src/models/mod.rs at line 3
edit in src/main.rs at line 1
edit in src/main.rs at line 4
+ use rocket_dyn_templates::Template;
edit in src/main.rs at line 6
[5.761]→[5.8002:8016](∅→∅),
[5.771]→[5.253:254](∅→∅),
[5.8016]→[5.253:254](∅→∅),
[5.253]→[5.253:254](∅→∅) replacement in src/main.rs at line 9
[5.8018]→[5.8018:8054](∅→∅) − use rocket_dyn_templates::Template;
+ mod database;
+ mod repoman;
edit in src/main.rs at line 13
edit in src/main.rs at line 20
+ let repo_storage_root =
+ env::var("REPOSITORY_ROOT").expect("No REPOSITORY_ROOT env var exposed");
+
edit in src/main.rs at line 26
+ .manage(repoman::new(repo_storage_root))
edit in src/main.rs at line 38
+ .mount("/", pijul::routes())
edit in shell.nix at line 20
+
+ # LibPijul dependencies
+ pkgs.buildPackages.xxHash
+ pkgs.buildPackages.zstd
edit in shell.nix at line 48
+
+ export REPOSITORY_ROOT="$PWD/tmp/repositories"
+ if [ ! -d $REPOSITORY_ROOT ]; then
+ mkdir $REPOSITORY_ROOT
+ fi
file addition: 20210910105518_add_uuid_project_repo_path.up.sql (----------)
+ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
+ ALTER TABLE projects ADD repository_uuid uuid NOT NULL DEFAULT uuid_generate_v4();
+
file addition: 20210910105518_add_uuid_project_repo_path.down.sql (----------)
+ ALTER TABLE projects DROP COLUMN repository_uuid;
+ DROP EXTENSION IF EXISTS "uuid-ossp";
replacement in migrations/20210907120846_projects_table.up.sql at line 4
[4.4313]→[4.4313:4349](∅→∅) − owner_id integer REFERENCES users,
+ owner_id integer REFERENCES users NOT NULL,
edit in README.md at line 9
+ - `REPOSITORY_ROOT` will be used as storage root for repositories, and must be supplied
edit in Cargo.toml at line 9
edit in Cargo.toml at line 12
+ uuid = { version = "0.8", features = ["serde", "v4"] }
+ libpijul = "1.0.0-alpha.47"
replacement in Cargo.toml at line 23
[5.1853]→[5.9979:10067](∅→∅) − features = [ "runtime-tokio-rustls", "postgres", "macros", "migrate", "time", "chrono"]
+ features = [ "runtime-tokio-rustls", "postgres", "macros", "migrate", "time", "chrono", "uuid"]
edit in Cargo.lock at line 4
+
+ [[package]]
+ name = "adler32"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
replacement in Cargo.lock at line 28
[5.10708]→[5.10708:10719](∅→∅) + "cipher 0.2.5",
+ ]
+
+ [[package]]
+ name = "aes"
+ version = "0.7.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8"
+ dependencies = [
+ "cfg-if 1.0.0",
+ "cipher 0.3.0",
+ "cpufeatures 0.2.1",
+ "ctr 0.8.0",
+ "opaque-debug 0.3.0",
replacement in Cargo.lock at line 51
[5.10938]→[5.10938:10965](∅→∅) − "aes",
− "cipher",
− "ctr",
+ "aes 0.6.0",
+ "cipher 0.2.5",
+ "ctr 0.6.0",
replacement in Cargo.lock at line 64
[5.11197]→[5.11197:11208](∅→∅) replacement in Cargo.lock at line 74
[5.11440]→[5.11440:11451](∅→∅) replacement in Cargo.lock at line 84
[5.2121]→[5.2121:2135](∅→∅) edit in Cargo.lock at line 99
+ name = "anyhow"
+ version = "1.0.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "28ae2b3dec75a406790005a200b1bd89785afc02517a00ca99ecfe093ee9e6cf"
+
+ [[package]]
+ name = "arrayref"
+ version = "0.3.6"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
+
+ [[package]]
edit in Cargo.lock at line 117
+ name = "arrayvec"
+ version = "0.7.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd"
+
+ [[package]]
edit in Cargo.lock at line 208
+ name = "bincode"
+ version = "1.3.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+ dependencies = [
+ "serde",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 232
+ ]
+
+ [[package]]
+ name = "blake3"
+ version = "1.0.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "dcd555c66291d5f836dbb6883b48660ece810fe25a31f3bdfb911945dff2691f"
+ dependencies = [
+ "arrayref",
+ "arrayvec 0.7.1",
+ "cc",
+ "cfg-if 1.0.0",
+ "constant_time_eq",
+ "digest 0.9.0",
edit in Cargo.lock at line 279
+ name = "bs58"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3"
+
+ [[package]]
edit in Cargo.lock at line 324
+ name = "canonical-path"
+ version = "2.0.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "e6e9e01327e6c86e92ec72b1c798d4a94810f147209bbe3ffab6a86954937a6f"
+
+ [[package]]
edit in Cargo.lock at line 356
+ "serde",
+ "time 0.1.43",
edit in Cargo.lock at line 381
+ name = "cipher"
+ version = "0.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
+ dependencies = [
+ "generic-array 0.14.4",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 394
+
+ [[package]]
+ name = "constant_time_eq"
+ version = "0.1.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
replacement in Cargo.lock at line 417
[5.4953]→[5.13437:13446](∅→∅) replacement in Cargo.lock at line 420
[5.13466]→[5.4953:4962](∅→∅),
[5.4953]→[5.4953:4962](∅→∅) edit in Cargo.lock at line 429
+ dependencies = [
+ "libc",
+ ]
+
+ [[package]]
+ name = "cpufeatures"
+ version = "0.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469"
edit in Cargo.lock at line 458
+ name = "crc32fast"
+ version = "1.2.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a"
+ dependencies = [
+ "cfg-if 1.0.0",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 474
+ ]
+
+ [[package]]
+ name = "crossbeam-deque"
+ version = "0.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+ dependencies = [
+ "cfg-if 1.0.0",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+ ]
+
+ [[package]]
+ name = "crossbeam-epoch"
+ version = "0.9.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
+ dependencies = [
+ "cfg-if 1.0.0",
+ "crossbeam-utils",
+ "lazy_static",
+ "memoffset",
+ "scopeguard",
edit in Cargo.lock at line 525
+ dependencies = [
+ "generic-array 0.14.4",
+ "subtle",
+ ]
+
+ [[package]]
+ name = "crypto-mac"
+ version = "0.11.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
replacement in Cargo.lock at line 546
[5.13948]→[5.13948:13959](∅→∅) + "cipher 0.2.5",
+ ]
+
+ [[package]]
+ name = "ctr"
+ version = "0.8.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea"
+ dependencies = [
+ "cipher 0.3.0",
edit in Cargo.lock at line 559
+ name = "curve25519-dalek"
+ version = "3.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61"
+ dependencies = [
+ "byteorder",
+ "digest 0.9.0",
+ "rand_core 0.5.1",
+ "serde",
+ "subtle",
+ "zeroize",
+ ]
+
+ [[package]]
+ name = "data-encoding"
+ version = "2.3.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
+
+ [[package]]
edit in Cargo.lock at line 629
+
+ [[package]]
+ name = "diffs"
+ version = "0.4.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "a8117b4111dc8d9e88d92ec2ee1cda48318af35c3e6b4f8599add5048189971d"
edit in Cargo.lock at line 687
+ name = "ed25519"
+ version = "1.2.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "4620d40f6d2601794401d6dd95a5cf69b6c157852539470eeda433a99b3c0efc"
+ 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",
+ "ed25519",
+ "rand 0.7.3",
+ "serde",
+ "serde_bytes",
+ "sha2",
+ "zeroize",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 781
+ name = "fs2"
+ version = "0.4.3"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
+ dependencies = [
+ "libc",
+ "winapi 0.3.9",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 959
+ version = "0.1.16"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+ dependencies = [
+ "cfg-if 1.0.0",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+ ]
+
+ [[package]]
+ name = "getrandom"
replacement in Cargo.lock at line 976
[5.9973]→[5.9973:9982](∅→∅) + "wasi 0.10.2+wasi-snapshot-preview1",
replacement in Cargo.lock at line 1087
[5.17268]→[5.17268:17277](∅→∅) replacement in Cargo.lock at line 1096
[5.7752]→[5.7752:7767](∅→∅) + "crypto-mac 0.10.0",
+ "digest 0.9.0",
+ ]
+
+ [[package]]
+ name = "hmac"
+ version = "0.11.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
+ dependencies = [
+ "crypto-mac 0.11.1",
replacement in Cargo.lock at line 1301
[5.8498]→[5.8498:8511](∅→∅) replacement in Cargo.lock at line 1310
[5.13302]→[5.13302:13321](∅→∅) + version = "0.2.101"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21"
+
+ [[package]]
+ name = "libpijul"
+ version = "1.0.0-alpha.48"
replacement in Cargo.lock at line 1318
[5.13386]→[5.13386:13464](∅→∅) − checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
+ checksum = "ffbd6c9d230f5db81cadc7cbfd824bdd594a864df8fb173487717dc4a6d0c6cb"
+ dependencies = [
+ "adler32",
+ "aes 0.7.5",
+ "bincode",
+ "bitflags",
+ "blake3",
+ "bs58",
+ "byteorder",
+ "canonical-path",
+ "cfg-if 1.0.0",
+ "chrono",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "curve25519-dalek",
+ "data-encoding",
+ "diffs",
+ "ed25519-dalek",
+ "encoding_rs",
+ "generic-array 0.14.4",
+ "hmac 0.11.0",
+ "ignore",
+ "lazy_static",
+ "log",
+ "lru-cache",
+ "memchr",
+ "parking_lot",
+ "path-slash",
+ "pbkdf2",
+ "pijul-macros",
+ "rand 0.7.3",
+ "rand_core 0.6.3",
+ "regex",
+ "sanakirja",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "sha2",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "toml",
+ "twox-hash",
+ "zstd-seekable",
+ ]
+
+ [[package]]
+ name = "linked-hash-map"
+ version = "0.5.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
edit in Cargo.lock at line 1402
+ name = "lru-cache"
+ version = "0.1.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
+ dependencies = [
+ "linked-hash-map",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 1440
+ name = "memmap"
+ version = "0.7.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
+ dependencies = [
+ "libc",
+ "winapi 0.3.9",
+ ]
+
+ [[package]]
+ name = "memoffset"
+ version = "0.6.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
+ dependencies = [
+ "autocfg",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 1565
edit in Cargo.lock at line 1567
edit in Cargo.lock at line 1573
edit in Cargo.lock at line 1707
+ name = "path-slash"
+ version = "0.1.4"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3cacbb3c4ff353b534a67fb8d7524d00229da4cb1dc8c79f4db96e375ab5b619"
+
+ [[package]]
+ name = "pbkdf2"
+ version = "0.8.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa"
+ dependencies = [
+ "crypto-mac 0.11.1",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 1812
+ name = "pijul-macros"
+ version = "0.4.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "e64c9817419a65e59c4de1d74a0b1ab551839807fd20260c252d8b03a4e65714"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+ "regex",
+ "syn",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 1836
+ name = "pkg-config"
+ version = "0.3.19"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
+
+ [[package]]
replacement in Cargo.lock at line 1876
[5.23692]→[5.23692:23701](∅→∅) replacement in Cargo.lock at line 1879
[5.23721]→[5.23721:23730](∅→∅) edit in Cargo.lock at line 1973
+ 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 0.2.0",
+ ]
+
+ [[package]]
+ name = "rand"
replacement in Cargo.lock at line 1991
[5.19580]→[5.19580:19622](∅→∅) − "rand_chacha",
− "rand_core",
− "rand_hc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.3",
+ "rand_hc 0.3.1",
+ ]
+
+ [[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",
replacement in Cargo.lock at line 2013
[5.19851]→[5.19851:19865](∅→∅) + "rand_core 0.6.3",
+ ]
+
+ [[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",
replacement in Cargo.lock at line 2031
[5.20077]→[5.20077:20091](∅→∅) + "getrandom 0.2.3",
+ ]
+
+ [[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",
replacement in Cargo.lock at line 2049
[5.20301]→[5.20301:20315](∅→∅) replacement in Cargo.lock at line 2067
[5.10315]→[5.10315:10329](∅→∅) replacement in Cargo.lock at line 2154
[5.21669]→[5.21669:21678](∅→∅) replacement in Cargo.lock at line 2161
[5.21759]→[5.21759:21768](∅→∅) replacement in Cargo.lock at line 2224
[5.22602]→[5.22602:22611](∅→∅) edit in Cargo.lock at line 2304
+ ]
+
+ [[package]]
+ name = "sanakirja"
+ version = "1.2.11"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "be030ebfecb0589e7c83817620ee833b98c3de089b1a9393b195dfc04b7fc9fe"
+ dependencies = [
+ "crc32fast",
+ "fs2",
+ "lazy_static",
+ "log",
+ "memmap",
+ "parking_lot",
+ "sanakirja-core",
+ "thiserror",
+ ]
+
+ [[package]]
+ name = "sanakirja-core"
+ version = "1.2.13"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "9828a6c9219969d6b19cfb0b53a8aed96e29983d0944a67db0a8c44db20ebe00"
+ dependencies = [
+ "crc32fast",
edit in Cargo.lock at line 2405
+ name = "serde_bytes"
+ version = "0.11.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9"
+ dependencies = [
+ "serde",
+ ]
+
+ [[package]]
replacement in Cargo.lock at line 2455
[5.26267]→[5.11815:11831](∅→∅),
[5.11815]→[5.11815:11831](∅→∅) replacement in Cargo.lock at line 2474
[5.26349]→[5.12108:12124](∅→∅),
[5.12108]→[5.12108:12124](∅→∅) edit in Cargo.lock at line 2487
+
+ [[package]]
+ name = "signature"
+ version = "1.3.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "c19772be3c4dd2ceaacf03cb41d5885f2a02c4d8804884918e3a258480803335"
replacement in Cargo.lock at line 2590
[5.13303]→[5.13303:13312](∅→∅) replacement in Cargo.lock at line 2599
[5.13409]→[5.13409:13418](∅→∅) replacement in Cargo.lock at line 2610
[5.13541]→[5.26854:26863](∅→∅) edit in Cargo.lock at line 2613
edit in Cargo.lock at line 2760
+ name = "synstructure"
+ version = "0.12.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicode-xid",
+ ]
+
+ [[package]]
replacement in Cargo.lock at line 2785
[5.28995]→[5.28995:29004](∅→∅) replacement in Cargo.lock at line 2805
[5.27221]→[5.27221:27230](∅→∅) edit in Cargo.lock at line 2843
+ name = "threadpool"
+ version = "1.8.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+ dependencies = [
+ "num_cpus",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 2853
+ version = "0.1.43"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+ dependencies = [
+ "libc",
+ "winapi 0.3.9",
+ ]
+
+ [[package]]
+ name = "time"
edit in Cargo.lock at line 3055
+ name = "twox-hash"
+ version = "1.6.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "1f559b464de2e2bdabcac6a210d12e9b5a5973c251e102c44c585c71d51bd78e"
+ dependencies = [
+ "cfg-if 1.0.0",
+ "rand 0.8.4",
+ "static_assertions",
+ ]
+
+ [[package]]
edit in Cargo.lock at line 3214
+ ]
+
+ [[package]]
+ name = "uuid"
+ version = "0.8.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+ dependencies = [
+ "getrandom 0.2.3",
+ "serde",
edit in Cargo.lock at line 3252
+
+ [[package]]
+ name = "wasi"
+ version = "0.9.0+wasi-snapshot-preview1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
edit in Cargo.lock at line 3422
+
+ [[package]]
+ name = "zeroize"
+ version = "1.4.1"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "377db0846015f7ae377174787dd452e1c5f5a9050bc6f954911d01f116daa0cd"
+ dependencies = [
+ "zeroize_derive",
+ ]
+
+ [[package]]
+ name = "zeroize_derive"
+ version = "1.1.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1"
+ dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+ ]
+
+ [[package]]
+ name = "zstd-seekable"
+ version = "0.1.7"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "3e3b99cee88f0309ca765c6aa8c284a00394c35ef8ca012e2409485fc369bf2f"
+ dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "thiserror",
+ "threadpool",
+ ]