Skip to main content

fur_cli/commands/utils/
input.rs

1use std::io::{self, Write};
2
3pub fn ask_string(prompt: &str, default: Option<&str>) -> String {
4    print!("{}", prompt);
5    io::stdout().flush().unwrap();
6
7    let mut buf = String::new();
8    io::stdin().read_line(&mut buf).unwrap();
9
10    let s = buf.trim();
11    if s.is_empty() {
12        default.unwrap_or("").to_string()
13    } else {
14        s.to_string()
15    }
16}
17
18pub fn ask_raw(prompt: &str) -> String {
19    print!("{}", prompt);
20    io::stdout().flush().unwrap();
21
22    let mut buf = String::new();
23    io::stdin().read_line(&mut buf).unwrap();
24    buf.trim().to_string()
25}
26
27pub fn default_yes(s: &str) -> bool {
28    s.is_empty() || s == "y" || s == "yes"
29}
30
31pub fn ask_yes_no(prompt: &str, parser: fn(&str) -> bool) -> bool {
32    print!("{}", prompt);
33    io::stdout().flush().unwrap();
34
35    let mut buf = String::new();
36    io::stdin().read_line(&mut buf).unwrap();
37    parser(buf.trim().to_lowercase().as_str())
38}