19 个版本
新版本 0.6.0 | 2024 年 8 月 18 日 |
---|---|
0.5.8 | 2024 年 4 月 6 日 |
0.5.7 | 2024 年 1 月 29 日 |
0.5.4 | 2023 年 11 月 29 日 |
377 在 命令行界面 中排名
167 每月下载量
85KB
2K SLoC
may clack
这是一个 npm 包 @clack/prompts 的 Rust 版本。
开发中
该项目仍在开发中
API 可能还会发生变化
lib.rs
:
这是 https://npmjs.net.cn/package/@clack/prompts 的 Rust 版本
设置
您可以使用宏 intro!
和 outro!
分别设置提示会话的开始和结束
use may_clack::{intro, outro};
intro!("intro");
// do stuff
outro!("outro");
取消
当用户取消一个问题时,您可以使用 cancel!
工具提供取消消息。
当取消时,将返回 error::ClackError::Cancelled
,或者您可以使用 traits::IsCancel
特性扩展来检查它是否被取消。
所有可以返回 Cancelled
Err 的输入类型也都有添加 .cancel
闭包的选项
use may_clack::{cancel, input, error::ClackError};
let text = input("todo").interact();
if let Err(ClackError::Cancelled) = text {
cancel!("operation cancelled");
}
use may_clack::{cancel, input, traits::IsCancel};
let text = input("todo").interact();
if text.is_cancel() {
cancel!("operation cancelled");
}
信息
如果您想在提示会话中写入消息,可以使用 info!
、warn!
或 err!
工具。
use may_clack::{err, info, intro, outro, warn};
intro!("intro");
// do stuff
info!("info");
// do stuff
warn!("warn");
// do stuff
err!("err");
// do stuff
outro!("outro");
通用
共有6个组件: input
、confirm
、select
、multi_select
、multi_input
每种输入类型都返回一个结构体,允许您设置提示。
因为每个提示都需要一个消息,所以初始的
要在设置提示后实际提示用户,必须调用 .interact()
use may_clack::confirm;
let answer = confirm("Yes or No?").interact()?;
组件
输入
input::Input
组件接受一行文本。
use may_clack::input;
let answer = input("what is the meaning of life?").initial_value("42").interact()?;
println!("{:?}", answer);
确认
confirm::Confirm
组件接受是或否的回答。
use may_clack::confirm;
let answer = confirm("do you want to continue?").interact()?;
println!("answer {:?}", answer);
选择
select::Select
组件允许用户从选项列表中选择一个值。
use may_clack::select;
#[derive(Debug, Clone)]
enum Fruit {
Mango,
Peach,
PassionFruit,
}
let fruit = select("pick a fruit")
.option_hint(Fruit::Mango, "Mango", "The best one")
.option(Fruit::Peach, "Peach")
.option(Fruit::PassionFruit, "Passion fruit")
.interact()?;
println!("fruit {:?}", fruit);
多选
multi_select::MultiSelect
组件允许用户从选项列表中选择多个值。
use may_clack::multi_select;
let toppings = multi_select("Choose your toppings")
.option("fruits", "Dried fruits")
.option("chocolate", "Chocolate chips")
.option_hint("sauce", "Chocolate sauce", "it's warm")
.interact()?;
println!("toppings {:?}", toppings);
多行输入
multi_input::MultiInput
组件接受多行文本。
use may_clack::multi_input;
let lines = multi_input("idk").interact()?;
println!("lines {:?}", lines);
依赖项
~6–16MB
~215K SLoC