#prompt #macro-derive #dialoguer #interactive #dialog #constructing #helper

yaga

使用 dialoguer 构建交互式消息提示的特质辅助器(和派生宏)

1 个不稳定版本

0.1.0 2020年11月18日

#831 in 配置

自定义许可

7KB
57

Yaga

它是 dialoguer crate 上的简单包装特质。它的目标是消除构建交互式 CLI 应用程序时提供显式代码的需求。它附带一个实用的派生宏,可以将(几乎)任何结构体转换为命令提示配置。

用法

将 yaga 添加到您的 Cargo.toml

[dependencies]
yaga = "0.1.0" 

将特质导入您的命名空间,并将其派生到一些结构体上

use yaga::Dialogue;

#[derive(Dialogue)]
struct Config {
    #[dialogue(prompt = "An option")]
    an_option: String,
    #[dialogue(prompt = "Please input a number")]
    number: isize,
    #[dialogue(prompt = "Are you having a good day?")]
    is_day_good: bool,
}

然后您只需组合您的结构体即可

let config = Config::compose("Give me config... please!").unwrap();

对最终用户的说明

项目几乎处于 WIP 状态。

您必须将 #[dialoguer] 属性添加到结构体中的 每个 字段,并且它们必须设置 prompt
在枚举上派生 Dialogue 需要 恰好一个未命名的 字段。
一些类型的支持仍然缺失(例如 PathBuf、UUID、Uri)。
不提供生成的 CLI 配置。
API 会在任何时候更改(我不太确定特质方法名称)。

非常欢迎帮助。

依赖项

~3–13MB
~153K SLoC