dev_runner 0.1.2

A CLI tool to run development commands in a project via a interactive menu
Documentation
use serde_json::Value;

pub fn prompt_selecter(options: Value) -> Result<String, Box<dyn std::error::Error>> {
    let options_map = options.as_object().ok_or("Options must be a JSON object")?;

    let options_vec: Vec<_> = options_map
        .iter()
        .filter_map(|(key, value)| {
            value
                .as_str()
                .map(|val| (val.to_string(), key.clone(), val.to_string()))
        })
        .collect();

    if options_vec.is_empty() {
        return Err("No valid options found".into());
    }

    use cliclack::select;

    let selected = select("Pick or Search for a script to run")
        .filter_mode()
        .items(&options_vec)
        .interact()?;

    Ok(selected)
}