1 个不稳定版本
0.1.0 | 2020年11月18日 |
---|
#14 in #procmacro
用于 yaga
7KB
144 行
Yaga
它是对 dialoguer 库的简单包装 trait。目标是去除构建交互式 CLI 应用程序时提供显式代码的必要性。它附带了一个巧妙的派生宏,可以将(几乎)任何结构体转换为命令提示符配置。
用法
将 yaga 添加到您的 Cargo.toml
[dependencies]
yaga = "0.1.0"
将 trait 导入到您的命名空间,并将其派生到某些结构体上
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 可能在任何时刻更改(我不太确定 trait 方法的名称)。
非常感谢帮助。
依赖项
~1.5MB
~35K SLoC