winepath 0.1.1

Convert between Wine and native file paths without spawning a `winepath` process.
Documentation
use winepath::WineConfig;

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
enum Action {
    ToUnix,
    ToWindows,
}

fn main() {
    let mut action = Action::ToUnix;
    let mut path = None;

    if let Some(arg) = std::env::args().nth(1) {
        match arg.as_str() {
            "-u" => action = Action::ToUnix,
            "-w" => action = Action::ToWindows,
            _ => path = Some(arg),
        }
    } else {
        panic!("usage: winepath [OPTION] [PATH]")
    };

    let path = if let Some(path) = path {
        path
    } else if let Some(path) = std::env::args().nth(2) {
        path
    } else {
        panic!("usage: winepath [OPTION] [PATH]");
    };

    let config = WineConfig::from_env().unwrap();
    println!(
        "{}",
        match action {
            Action::ToUnix => config
                .to_native_path(path)
                .unwrap()
                .to_string_lossy()
                .to_string(),
            Action::ToWindows => {
                let path = std::fs::canonicalize(path).unwrap();
                config.to_wine_path(path).unwrap().to_string()
            }
        }
    )
}