use indicatif::{ProgressBar, ProgressStyle};

use decoder;

const STEPS: u64 = 100;

pub fn decode(input_path: &str, output_path: &str) {
    println!("Decoding {} to {}", input_path, output_path);

    let bar = ProgressBar::new(STEPS).with_style(
        ProgressStyle::default_bar()
            .template("{spinner:.green} [{wide_bar}] {percent}% ({eta})")
            .progress_chars("=> "),
    );
    let res = decoder::decode(input_path, output_path, |progress, _| {
        bar.set_position((progress * STEPS as f32) as u64);
        (true, STEPS as u32)
    });
    bar.finish();

    if let Err(error) = res {
        println!("Unable to decode file: {}", error);
    } else {
        println!("Done!")
    }
}
