# 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
```bash
cargo add asky
```
Then, you can [see the documentation](https://docs.rs/asky/).
## Demos
### Confirm
![Confirm prompt gif demo](demos/confirm.gif)
Code:
```rust
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](demos/toggle.gif)
Code:
```rust
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](demos/text.gif)
Code:
```rust
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](demos/number.gif)
Code:
```rust
use asky::Number;
fn main() -> std::io::Result<()> {
let age: = Number::::new("How old are you?").prompt()?;
if let Ok(age) = Number::::new("How old are you?").prompt()? {
if age <= 60 {
println!("Pretty young");
}
}
// ...
Ok(())
}
```
### Password
![Password prompt gif demo](demos/password.gif)
Code:
```rust
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](demos/select.gif)
Code:
```rust
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](demos/multi_select.gif)
Code:
```rust
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](https://www.npmjs.com/package/prompts) - Lightweight, beautiful and user-friendly interactive prompts
- [Astro](https://astro.build/) - All-in-one web framework with a beautiful command line tool
- [Gum](https://github.com/charmbracelet/gum) - A tool for glamorous shell scripts
Alternatives:
- [Dialoguer](https://github.com/console-rs/dialoguer) - A command line prompting library.
- [Inquire](https://github.com/mikaelmello/inquire) - A library for building interactive prompts on terminals.
- [Requestty](https://github.com/Lutetium-Vanadium/requestty) - An easy-to-use collection of interactive cli prompts.
---
License: [MIT](LICENSE)