packages feed

wireform-parquet-0.1.0.0: scripts/parquet_variant_reference.rs

use parquet_variant::{Variant, VariantBuilder};
use std::{env, fs, path::Path};
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<_> = env::args().collect();
    let root = Path::new(&args[1]);
    for entry in fs::read_dir(root)? {
        let path = entry?.path();
        if path.extension().and_then(|x| x.to_str()) != Some("meta") {
            continue;
        }
        let metadata = fs::read(&path)?;
        let value = fs::read(path.with_extension("value"))?;
        match Variant::try_new(&metadata, &value) {
            Ok(v) => {
                let debug = format!("{:?}", v);
                let mut builder = VariantBuilder::new();
                builder.try_append_value(v)?;
                let (m, b) = builder.finish();
                fs::write(path.with_extension("rust-meta"), m)?;
                fs::write(path.with_extension("rust-value"), b)?;
                fs::write(path.with_extension("rust-status"), format!("OK {}", debug))?;
            }
            Err(e) => {
                fs::write(path.with_extension("rust-status"), format!("ERROR {}", e))?;
            }
        }
    }
    Ok(())
}