modcli/output/input/
console.rs

1use crate::config::CliConfig;
2use crate::output::input::prompt_text;
3use crate::output::print;
4
5pub fn run_interactive_console(config: &CliConfig) {
6    // Show welcome message, scroll line-by-line with optional delay
7    if let Some(welcome) = &config.welcome {
8        let welcome_text = welcome.join("\n");
9        let welcome_lines: Vec<&str> = welcome_text.lines().collect();
10        print::scroll(&welcome_lines, config.line_delay.unwrap_or(0));
11    }
12
13    // Set prompt prefix or default to "Mod > "
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        let response = format!("You typed: {}", input);
23        let response_lines: Vec<&str> = response.lines().collect();
24        print::scroll(&response_lines, 0);
25    }
26
27    // Show goodbye message, scroll line-by-line with optional delay
28    if let Some(goodbye) = &config.goodbye {
29        let goodbye_text = goodbye.join("\n");
30        let goodbye_lines: Vec<&str> = goodbye_text.lines().collect();
31        print::scroll(&goodbye_lines, config.line_delay.unwrap_or(0));
32    }
33}