#prompt #read-line #ask #cli #questions

asky

用于在终端中创建美观提示的库

2 个版本

0.1.1 2023 年 4 月 5 日
0.1.0 2023 年 4 月 5 日

695命令行界面

24 每月下载量
用于 2 crates

MIT 许可证

315KB
2K SLoC

Asky

Ansi + ask + yes = Asky

终端的美观提示。

用法

首先,这是一个库,所以你需要将其添加到你的项目中

cargo add asky

然后,你可以 查看文档

示例

确认

Confirm prompt gif demo

代码
use asky::Confirm;

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

    // ...

    Ok(())
}

切换

Toggle prompt gif demo

代码
use asky::Toggle;

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

    // ...

    Ok(())
}

文本

Text prompt gif demo

代码
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 prompt gif demo

代码
use asky::Number;

fn main() -> std::io::Result<()> {
    let age:  = Number::<u8>::new("How old are you?").prompt()?;

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

    // ...

    Ok(())
}

密码

Password prompt gif demo

代码
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 prompt gif demo

代码
use asky::Select;

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

    // ...

    Ok(())
}

多选

Multi select prompt gif demo

代码
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(())
}

提及

灵感来源于

  • Prompts - 轻量级、美观且用户友好的交互式提示
  • Astro - 具有美观命令行工具的全栈 Web 框架
  • Gum - 用于华丽外壳脚本的工具

替代方案

  • Dialoguer - 一个命令行提示库。
  • Inquire - 用于在终端上构建交互式提示的库。
  • Requestty - 一个易于使用的交互式 CLI 提示集合。

许可证: MIT

依赖关系

~2–12MB
~75K SLoC