shell_exec 0.2.1

Cross platform library to execute shell scripts
Documentation
use std::ffi::OsStr;

use tokio::process::Command;

pub enum Argument<'a> {
    Normal(&'a str),
    Path(&'a OsStr),
    Raw(&'a str),
}

pub trait CommandArgument {
    fn argument(&mut self, arg: &Argument<'_>) -> &mut Self;
}

impl CommandArgument for Command {
    fn argument(&mut self, arg: &Argument<'_>) -> &mut Self {
        match arg {
            Argument::Normal(value) => self.arg(value),
            Argument::Path(value) => self.arg(value),
            Argument::Raw(value) => {
                #[cfg(windows)]
                {
                    self.raw_arg(value)
                }
                #[cfg(unix)]
                {
                    self.arg(value)
                }
            }
        }
    }
}