car-parser 0.1.0

Rust parser for Apple .car asset catalog archives
Documentation
use std::env;
use std::path::PathBuf;

fn main() -> Result<(), car::CarError> {
    let mut args = env::args().skip(1);
    let path = args
        .next()
        .expect("usage: cargo run -p car-parser --example export_plan -- <file.car> [out-dir]");
    let out = args
        .map(PathBuf::from)
        .next()
        .unwrap_or_else(|| "out".into());
    let archive = car::Car::new(path)?;
    let plan = car::export::plan_export(&archive, out);

    for job in &plan.jobs {
        println!(
            "{:?} {} -> {}",
            job.format,
            job.logical_facet_name,
            job.path.display()
        );
    }

    eprintln!(
        "{} jobs, {} skipped, {} canonical coalesced",
        plan.jobs.len(),
        plan.skipped.len(),
        plan.canonical_coalesced
    );

    Ok(())
}