Skip to content
/ asky Public

Rust library to create good looking prompts in the terminal

License

Notifications You must be signed in to change notification settings

axelvc/asky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Asky

Ansi + ask + yes = Asky

Good looking prompts for the terminal.

Usage

First of all, this is a library, so you need to add this to your project

cargo add asky

Then, you can see the documentation.

Demos

Confirm

Confirm prompt gif demo

Code:
use asky::Confirm;

fn main() -> std::io::Result<()> {
    if Confirm::new("Do you like coffe?").prompt()? {
        println!("Great, me too!");
    }

    // ...

    Ok(())
}

Toggle

Toggle prompt gif demo

Code:
use asky::Toggle;

fn main() -> std::io::Result<()> {
    let tabs = Toggle::new("Which is better?", ["Tabs", "Spaces"]).prompt()?;
    println!("Great choice");

    // ...

    Ok(())
}

Text

Text prompt gif demo

Code:
use asky::Text;

fn main() -> std::io::Result<()> {
    let color = Text::new("What's your favorite color?").prompt()?;
    println!("{color} is a beautiful color");

    // ...

    Ok(())
}

Number

Number prompt gif demo

Code:
use asky::Number;

fn main() -> std::io::Result<()> {
    if let Ok(age) = Number::<u8>::new("How old are you?").prompt()? {
        if age <= 60 {
            println!("Pretty young");
        }
    }

    // ...

    Ok(())
}

Password

Password prompt gif demo

Code:
use asky::Password;

fn main() -> std::io::Result<()> {
    let password = Password::new("What's your IG password?").prompt()?;

    if password.len() >= 1 {
        println!("Ultra secure!");
    }

    // ...

    Ok(())
}

Select

Select prompt gif demo

Code:
use asky::Select;

fn main() -> std::io::Result<()> {
    let choice = Select::new("Choose number", 1..=30).prompt()?;
    println!("{choice}, Interesting choice");

    // ...

    Ok(())
}

MultiSelect

Multi select prompt gif demo

Code:
use asky::MultiSelect;

fn main() -> std::io::Result<()> {
    let opts = ["Dog", "Cat", "Fish", "Bird", "Other"];
    let choices = MultiSelect::new("What kind of pets do you have?", opts).prompt()?;

    if choices.len() > 2 {
        println!("So you love pets");
    }

    // ...

    Ok(())
}

Mentions

Inspired by:

  • Prompts - Lightweight, beautiful and user-friendly interactive prompts
  • Astro - All-in-one web framework with a beautiful command line tool
  • Gum - A tool for glamorous shell scripts

Alternatives:

  • Dialoguer - A command line prompting library.
  • Inquire - A library for building interactive prompts on terminals.
  • Requestty - An easy-to-use collection of interactive cli prompts.

License: MIT

About

Rust library to create good looking prompts in the terminal

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages