9个版本 (4个重大更新)

0.5.0 2022年9月1日
0.4.1 2022年7月7日
0.4.0 2022年6月4日
0.3.0 2022年1月18日
0.1.1 2021年7月17日

#124 in 命令行界面

Download history 4016/week @ 2024-03-14 2756/week @ 2024-03-21 2449/week @ 2024-03-28 2367/week @ 2024-04-04 2064/week @ 2024-04-11 2330/week @ 2024-04-18 2729/week @ 2024-04-25 2818/week @ 2024-05-02 3069/week @ 2024-05-09 2692/week @ 2024-05-16 2947/week @ 2024-05-23 4140/week @ 2024-05-30 3741/week @ 2024-06-06 4497/week @ 2024-06-13 4812/week @ 2024-06-20 3804/week @ 2024-06-27

17,495 每月下载量
45 个crate中使用 (40个直接使用)

MIT 许可证

475KB
10K SLoC

Requestty

RustCI RustCI RustCI Crates.io License Documentation

requestty (request-tty) 是一个易于使用的交互式命令行提示集合,灵感来源于 Inquirer.js.

  • 易于使用 - 建造者API和宏允许您轻松配置和使用内置提示。

  • 可扩展 - 使用配套的UI渲染库轻松创建和使用自定义提示。

  • 灵活 - 所有提示都可以单独使用或连接在一起。

  • 动态 - 您可以根据先前的问题动态决定应提出哪些问题。

  • 验证 - 您可以使用任何提示验证用户输入。

  • 示例 - 每个提示都附有示例以及更多示例,用于更复杂的流程

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
requestty = "0.4.1"

提出问题

let question = requestty::Question::expand("overwrite")
    .message("Conflict on `file.rs`")
    .choices(vec![
        ('y', "Overwrite"),
        ('a', "Overwrite this one and all next"),
        ('d', "Show diff"),
    ])
    .default_separator()
    .choice('x', "Abort")
    .build();

println!("{:#?}", requestty::prompt_one(question));

更多示例可在文档示例目录中找到。

内置提示

有11个内置提示

  • 输入

    接收用户输入并返回 String 的提示。

  • 密码

    接收用户输入并隐藏的提示。

  • 编辑器

    在临时文件上启动用户首选编辑器的提示。

  • 确认

    返回 truefalse 的提示。

  • 整型

    接收 i64 作为输入的提示。

  • 浮点数

    接收 f64 作为输入的提示。

  • 扩展

    允许用户通过键选择列表中的选项的提示。

  • 选择

    允许用户从选项列表中进行选择的提示

  • RawSelect

    允许用户从带有索引的选项列表中进行选择的提示

  • MultiSelect

    允许用户从选项列表中选择多个项目的提示

  • OrderSelect

    允许用户组织选项列表的提示。

可选功能

  • :启用此功能后,您可以使用questionsprompt_module宏。

  • smallvec(默认):启用此功能后,将使用SmallVec而不是Vec进行自动补全。这允许内联单个补全。

  • crossterm(默认):启用此功能后,将使用crossterm库进行终端交互,例如绘图和接收事件。

  • termion:启用此功能后,将使用termion库进行终端交互,例如绘图和接收事件。

支持的最小Rust版本(MSRV)

支持的最小Rust版本(根据cargo-msrv)是1.56.1

依赖项

~3–12MB
~133K SLoC