modcli/output/input/
console.rs

1use crate::config::CliConfig;
2use crate::output::input::prompt_text;
3use crate::output::print::print_multiline;
4
5pub fn run_interactive_console(config: &CliConfig) {
6    if let Some(welcome) = &config.welcome {
7        print_multiline(
8            &welcome.iter().map(String::as_str).collect::<Vec<&str>>(),
9            Some(config.line_delay.unwrap_or(0)),
10        );
11    }
12
13    // Set prompt prefix or default to ">> "
14    let prompt = config.prompt_prefix.as_deref().unwrap_or("Mod > ");
15
16    loop {
17        let input = prompt_text(prompt);
18        if input.eq_ignore_ascii_case("exit") || input.eq_ignore_ascii_case("quit") {
19            break;
20        }
21
22        println!("You typed: {}", input);
23    }
24
25    if let Some(goodbye) = &config.goodbye {
26        print_multiline(
27            &goodbye.iter().map(String::as_str).collect::<Vec<&str>>(),
28            Some(config.line_delay.unwrap_or(0)),
29        );
30    }
31}