cli-prompts 0.1.1

Interactive prompts for the command line
Documentation
use std::io::Result;

use cli_prompts::{
    DisplayPrompt,
    prompts::{Confirmation, Input},
    style::{Color, ConfirmationStyle, Formatting, InputStyle, LabelStyle},
};

fn name_validation(input: &str) -> std::result::Result<String, String> {
    if input.len() > 0 {
        Ok(input.to_string())
    } else {
        Err(String::from("Name must not be empty"))
    }
}

fn main() -> Result<()> {
    let label_style = LabelStyle::default()
        .prefix("*")
        .prefix_formatting(Formatting::default().foreground_color(Color::Cyan))
        .prompt_formatting(
            Formatting::default()
                .bold()
                .underline()
                .foreground_color(Color::Magenta),
        );
    let input_formatting = Formatting::default().foreground_color(Color::Cyan);
    let submitted_formatting = Formatting::default().foreground_color(Color::DarkCyan);

    let name = Input::new("Enter your name", name_validation)
        .style(
            InputStyle::default()
                .label_style(label_style.clone())
                .input_formatting(input_formatting.clone())
                .submitted_formatting(submitted_formatting.clone()),
        )
        .display();
    let coffee = Confirmation::new("Do you want a cup of coffee")
        .style(
            ConfirmationStyle::default()
                .label_style(label_style.clone())
                .input_formatting(input_formatting.clone())
                .submitted_formatting(submitted_formatting.clone()),
        )
        .display();

    println!("Name: {:?}", name);
    println!("Coffee: {:?}", coffee);

    Ok(())
}