systemless 0.1.126

High-Level Emulation for classic Macintosh applications
Documentation
use std::env;
use std::fs;
use std::path::PathBuf;

fn main() -> Result<(), String> {
    let mut args = env::args_os().skip(1);
    let input = args
        .next()
        .map(PathBuf::from)
        .ok_or_else(|| "usage: systemless-pack-web <input.sit> <output.kpk>".to_string())?;
    let output = args
        .next()
        .map(PathBuf::from)
        .ok_or_else(|| "usage: systemless-pack-web <input.sit> <output.kpk>".to_string())?;
    if args.next().is_some() {
        return Err("usage: systemless-pack-web <input.sit> <output.kpk>".to_string());
    }

    let input_bytes =
        fs::read(&input).map_err(|e| format!("could not read {}: {e}", input.display()))?;
    let packed = systemless::game::pack_stuffit_for_web(&input_bytes)?;
    fs::write(&output, &packed)
        .map_err(|e| format!("could not write {}: {e}", output.display()))?;

    eprintln!(
        "packed {} -> {} ({} KB -> {} KB)",
        input.display(),
        output.display(),
        input_bytes.len() / 1024,
        packed.len() / 1024
    );
    Ok(())
}