png_ect 1.0.0

A command-line tool for compressing png images using ECT.
Documentation
use png_ect::{process_directory, AppError};
use std::env;
use std::path::PathBuf;
use std::process;

fn parse_args() -> Result<(PathBuf, Option<u8>), AppError> {
    let args: Vec<String> = env::args().collect();
    if args.len() < 2 || args.len() > 3 {
        return Err(AppError {
            message: format!("Usage: {} <input-path> [-1 to -9]", args[0]),
        });
    }
    let compression_level = if args.len() == 3 {
        args[2][1..].parse::<u8>().ok()
    } else {
        None
    };
    Ok((PathBuf::from(&args[1]), compression_level))
}

fn main() {
    match parse_args()
        .and_then(|(path, compression_level)| process_directory(&path, compression_level))
    {
        Ok(_) => {}
        Err(e) => {
            eprintln!("{}", e);
            process::exit(1);
        }
    }
}