fur_cli/commands/utils/
input.rs1use 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}