Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages