cronback-cli 0.1.0

Cronback CLI
Documentation
static ACCEPTABLE_YES: &[&str] = &["y", "yes", "Y", "YES"];

pub fn confirm_fn<T>(always_yes: bool, msg: T) -> bool
where
    T: AsRef<str>,
{
    if always_yes {
        return true;
    }
    let answer =
        rprompt::prompt_reply(format!("{} [y/N] ", msg.as_ref())).unwrap();
    if ACCEPTABLE_YES.contains(&answer.as_str()) {
        return true;
    }
    false
}

#[allow(unused_macros)]
#[rustfmt::skip]
macro_rules! confirm {
    ($self:ident, $($arg:tt)*) => {{
        let res = ::std::format!($($arg)*);
        $crate::confirm::confirm_fn($self.yes, res)
    }}
}

#[rustfmt::skip]
macro_rules! confirm_or_abort {
    ($opts:ident, $($arg:tt)*) => {{
        let res = ::std::format!($($arg)*);
        if !$crate::confirm::confirm_fn($opts.yes, res) {
            return Err(::anyhow::anyhow!("Aborted!"));
        }
    }}
}

#[allow(unused)]
pub(crate) use {confirm, confirm_or_abort};