#prompt #script #cli

interactive-actions

运行声明式定义的操作和交互

3 个版本 (稳定版)

1.0.1 2023年3月3日
1.0.0 2022年8月24日
0.1.0 2022年8月7日

#801 in 命令行界面

Apache-2.0

20KB
332

交互式操作

github crates.io docs.rs build status

这是一个 Rust 库,用于运行声明式定义的操作和交互。

依赖项

[dependencies]
interactive-actions = "1"

查看最新版本请访问 crates.io

用法

运行示例

$ cargo run --example interaction
Finished dev [unoptimized + debuginfo] target(s) in 0.30s
   Running `target/debug/examples/interaction`
start
✔ are you ready to start? · Yes
city
✔ input a city · goo
transport
✔ pick a transport · bus
+ cd projects/interactive-actions
+ echo go for goo on a bus
go for goo on a bus

创建一个 Vec<Action>,这里以 YAML 格式描述,但你可以用 Rust 或任何 Deserialize 格式构建它

- name: city
  interaction:
    kind: input
    prompt: input a city
    out: city

并运行它

use interactive_actions::{data::{Action, ActionHook}, ActionRunner};

let actions: Vec<Action> = serde_yaml::from_str(YAML).unwrap();
let mut runner = ActionRunner::default();
let res = runner.run(
   &actions,
   None,
   ActionHook::After,
   Some(|action: &Action| {
      println!("{}", action.name);
   }),
);

版权

版权(c)2022 @jondot。有关更多详细信息,请参阅 LICENSE

依赖项

~6–16MB
~166K SLoC