interactive-actions 1.0.1

Run actions and interactions defined declaratively
Documentation
use interactive_actions::{
    data::{Action, ActionHook, VarBag},
    ActionRunner,
};

const YAML: &str = r#"
- name: start
  interaction:
    kind: confirm
    prompt: "are you ready to start?"
  break_if_cancel: true
- name: city
  interaction:
    kind: input
    prompt: input a city
    out: city
- name: transport
  interaction:
    kind: select
    prompt: pick a transport
    options:
    - bus
    - train
    - bike
    default: bus
    out: transport
  run: echo go for {{city}} on a {{transport}}
"#;

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