gitwrap 0.11.0

GitWrap is a simple wrapper around `git` command
Documentation
use std::sync::Arc;
use crate::wrap_command::FnOptionArg;


pub fn simple(git_option: &str) -> FnOptionArg {
    let l_git_option = String::from(git_option);
    FnOptionArg(Arc::new(move || vec![String::from(l_git_option.as_str())]))
}

pub fn equal_no_optional(git_option: &str, option_argument: &str) -> FnOptionArg {
    let l_option_argument = format!("{git_option}={option_argument}");
    FnOptionArg(Arc::new(move || vec![String::from(l_option_argument.as_str())]))
}

pub fn equal_optional(git_option: &str, option_argument: &str) -> FnOptionArg {
    let l_option_argument = if option_argument.is_empty() {
        String::from(git_option)
    } else {
        format!("{git_option}={option_argument}")
    };
    FnOptionArg(Arc::new(move || vec![String::from(l_option_argument.as_str())]))
}

pub fn with_parameter(git_option: &str, arg1: &str) -> FnOptionArg {
    let l_git_option = git_option.to_string();
    let l_arg1 = arg1.to_string();
    FnOptionArg(Arc::new(move || vec![
        String::from(l_git_option.as_str()),
        String::from(l_arg1.as_str())
    ]))
}

pub fn with_second_parameter(git_option: &str, arg1: &str, arg2: &str) -> FnOptionArg {
    let l_git_option = git_option.to_string();
    let l_arg1 = arg1.to_string();
    let l_arg2 = arg2.to_string();
    FnOptionArg(Arc::new(move || vec![
        String::from(l_git_option.as_str()),
        String::from(l_arg1.as_str()),
        String::from(l_arg2.as_str())
    ]
    ))
}

pub fn with_optional_third_parameter(git_option: &str, arg1: &str, arg2: &str, arg3: &str) -> FnOptionArg {
    let l_git_option = git_option.to_string();
    let l_arg1 = arg1.to_string();
    let l_arg2 = arg2.to_string();
    let l_arg3 = if !arg3.is_empty() {
        Some(String::from(arg3))
    } else {
        None
    };
    if let Some(arg) = l_arg3 {
        FnOptionArg(Arc::new(move || vec![
            String::from(l_git_option.as_str()),
            String::from(l_arg1.as_str()),
            String::from(l_arg2.as_str()),
            String::from(arg.as_str()),
        ]))
    } else {
        FnOptionArg(Arc::new(move || vec![
            String::from(l_git_option.as_str()),
            String::from(l_arg1.as_str()),
            String::from(l_arg2.as_str())
        ]))
    }
}

pub fn with_optional_second_parameter(git_option: &str, arg1: &str, arg2: &str) -> FnOptionArg {
    let l_git_option = git_option.to_string();
    let l_arg1 = arg1.to_string();
    let l_arg2 = if !arg2.is_empty() {
        Some(String::from(arg2))
    } else {
        None
    };

    if let Some(arg) = l_arg2 {
        FnOptionArg(Arc::new(move || vec![
            String::from(l_git_option.as_str()),
            String::from(l_arg1.as_str()),
            String::from(arg.as_str())
        ]))
    } else {
        FnOptionArg(Arc::new(move || vec![
            String::from(l_git_option.as_str()),
            String::from(l_arg1.as_str())
        ]))
    }
}

pub fn with_optional_parameter(git_option: &str, arg1: &str) -> FnOptionArg {
    let l_git_option = git_option.to_string();
    let l_arg1 = if !arg1.is_empty() {
        Some(String::from(arg1))
    } else {
        None
    };
    if let Some(arg) = l_arg1 {
        FnOptionArg(Arc::new(move || vec![
            String::from(l_git_option.as_str()),
            String::from(arg.as_str())
        ]))
    } else {
        FnOptionArg(Arc::new(move || vec![ String::from(l_git_option.as_str())]))
    }
}

pub fn value_parameter(value: &str) -> FnOptionArg {
    let l_value = String::from(value);
    FnOptionArg(Arc::new(move || vec![String::from(l_value.as_str())]))
}

pub fn double_value_parameter(value1: &str, value2: &str) -> FnOptionArg {
    let l_value1 = String::from(value1);
    let l_value2 = String::from(value2);
    FnOptionArg(Arc::new(move || vec![
        String::from(l_value1.as_str()),
        String::from(l_value2.as_str())
    ]))
}