rtlibs-utils 0.1.6

rtools library: utilities
Documentation
use super::PromptError;
use super::SEP;

pub struct PromptConfirm
{
    message: String,
    default: Option<bool>,
}

impl PromptConfirm
{
    pub fn new<S>(message: S) -> Self
    where
        S: AsRef<str>,
    {
        let inner = |message: &str| {
            let message = format!("{message}{SEP}");

            Self {
                message,
                default: None,
            }
        };

        inner(message.as_ref())
    }

    pub fn with_default(
        mut self,
        value: bool,
    ) -> Self
    {
        self.default = Some(value);
        self
    }

    pub fn prompt(self) -> Result<bool, PromptError>
    {
        let Self { message, default } = self;

        let mut prompt = inquire::Confirm::new(&message);
        if let Some(default) = default
        {
            prompt = prompt.with_default(default);
        }
        let response = prompt.prompt()?;

        Ok(response)
    }
}