quilt-rs 0.8.4

Rust library for accessing Quilt data packages.
Documentation
pub use crate::lineage::mocks as lineage;

pub use crate::io::remote::mocks as remote;

pub use crate::io::storage::mocks as storage;

pub fn row_hash_sample1() -> multihash::Multihash<256> {
    multihash::Multihash::wrap(0xb510, b"pedestrian").expect("Unexpected")
}

pub mod status {
    use super::row_hash_sample1;

    use crate::lineage::PackageFileFingerprint;

    pub fn package_file_fingerprint() -> PackageFileFingerprint {
        PackageFileFingerprint {
            size: 0,
            hash: row_hash_sample1(),
        }
    }
}

pub mod manifest {
    use super::row_hash_sample1;

    use std::collections::BTreeMap;
    use std::path::PathBuf;

    use crate::manifest::Row;
    use crate::manifest::Table;

    static TEST_LOCAL_PARQUET: &str = "fixtures/manifest.parquet";
    static TEST_LOCAL_PARQUET_CHECKSUMMED: &str = "fixtures/checksummed.parquet";
    static TEST_LOCAL_JSONL: &str = "fixtures/manifest.jsonl";

    fn local_uri(key: &str) -> PathBuf {
        std::env::current_dir().unwrap().join(key)
    }

    pub fn parquet() -> PathBuf {
        local_uri(TEST_LOCAL_PARQUET)
    }

    pub fn jsonl() -> PathBuf {
        local_uri(TEST_LOCAL_JSONL)
    }

    pub fn parquet_checksummed() -> PathBuf {
        local_uri(TEST_LOCAL_PARQUET_CHECKSUMMED)
    }

    pub fn row_with_name(name: PathBuf) -> Row {
        Row {
            name,
            place: "file:///z/x/y".to_string(),
            hash: row_hash_sample1(),
            ..Row::default()
        }
    }

    pub fn with_record_keys(keys: Vec<PathBuf>) -> Table {
        let mut table = Table::default();
        let mut records = BTreeMap::new();
        for key in &keys {
            records.insert(key.clone(), row_with_name(key.clone()));
        }
        table.set_records(records);
        table
    }

    pub fn with_rows(rows: Vec<Row>) -> Table {
        let mut table = Table::default();
        let mut records = BTreeMap::new();
        for row in &rows {
            records.insert(row.name.clone(), row.clone());
        }
        table.set_records(records);
        table
    }
}