use clap::{arg, Arg};
use std::process::exit;
use std::process::Command;

fn opt(arg: Arg) -> Arg {
    arg.required(false)
}

fn main() {
    let matches = clap::Command::new("ee")
        .about("dee-dee but the d is silent")
        .arg(opt(arg!( -b --bs <BYTES> "Copy BYTES bytes at a time")))
        .arg(opt(arg!( -c --count <COUNT> "Copy COUNT times")))
        .arg(opt(arg!( -i --if <INPUT> "Read from INPUT in lieu of stdin")))
        .arg(opt(arg!( -o --of <OUTPUT> "Write to OUTPUT in lieu of stdout")))
        .get_matches();
    let long_names = vec!(
        "bs",
        "count",
        "if",
        "of",
        );
    let status = Command::new("dd")
        .args(
            long_names
                .iter()
                .filter_map(|n| matches.value_of(n).map(|v| format!("{n}={v}"))),
        )
        .status()
        .expect("dd declined");
    exit(status.code().expect("dd died"));
}